倪劳资 发表于 2021-1-30 19:56:01

大家好,请教Python老版19讲动动手1

def find_flower(number = 153):
    if number == int(str(number)) ** 3 + int(str(number)) ** 3 + int(str(number)) ** 3:
      return number
    else:
      pass
   
   
for number in range(100,1000):
    print(find_flower(number))


我就是不明白,感觉自己代码没问题,但是运行起来就是900个None
路过的大神麻烦给小弟看一下啊{:10_329:}

昨非 发表于 2021-1-30 20:00:35

def find_flower(number = 153):
    if number == int(str(number)) ** 3 + int(str(number)) ** 3 + int(str(number)) ** 3:
      print(number)#吧return换成print放在函数内
    else:
      pass
   
   
for number in range(100,1000):
    find_flower(number)#这里直接调用就好

昨非 发表于 2021-1-30 20:02:13

因为你else分支里面没有返回值(none)
而 print(find_flower(number))这一语句打印的实际上是函数的返回值
所以在所难免的会打印出none
上述代码改了两处,很好理解的

qq1151985918 发表于 2021-1-30 20:07:05

def find_flower(number = 153):
    if number == int(str(number)) ** 3 + int(str(number)) ** 3 + int(str(number)) ** 3:
      return number
    else:
      pass
   
   
for number in range(100,1000):
    if find_flower(number):
      print(find_flower(number))


因为你else 默认是 return None

倪劳资 发表于 2021-1-30 20:14:11

昨非 发表于 2021-1-30 20:02
因为你else分支里面没有返回值(none)
而 print(find_flower(number))这一语句打印的实际上是函数的返回 ...

好的,谢谢您。
但是我还想问一句,关于第一处的修改
为啥用return返回啥都得不到
用print打印,结果就出来了呢{:10_272:}

倪劳资 发表于 2021-1-30 20:16:08

qq1151985918 发表于 2021-1-30 20:07
因为你else 默认是 return None

okk,谢谢您{:5_109:}
页: [1]
查看完整版本: 大家好,请教Python老版19讲动动手1