为你bu再恋 发表于 2021-4-18 10:40:05

水仙花

零基础python 18讲
水仙花那题这样写为啥会多个999???



yayc_zcyd 发表于 2021-4-18 10:44:12

把代码拆开写,那样看着有点乱{:10_277:}
print("一千以内的水仙花数为: ")
for n in range(100, 1000):
    hun = n // 100
    ten = (n - hun * 100) // 10
    ind = n % 10
    m = hun**3 + ten**3 + ind**3
    if n == m:
      print("%d \t" %n, end="")

逃兵 发表于 2021-4-18 10:44:19

本帖最后由 逃兵 于 2021-4-18 10:46 编辑

把return x去掉
把print(fuction())改成fuction()

def function():
    for x in range(100,1000):
      if x == (x%10)**3+(x//100)**3+((x//10)%10)**3:
            print(x)

function()

昨非 发表于 2021-4-18 10:47:38

因为你多了一个return x
这个return执行的时候刚好是for循环进行完的时候
此时,x=999,返回值返回给最后一行调用时的print函数
自然就多打印了一次999

既然函数内部已经通过if判断print了
根本就用不到返回值
调用的时候直接function()就好

为你bu再恋 发表于 2021-4-18 10:49:03

逃兵 发表于 2021-4-18 10:44
把return x去掉
把print(fuction())改成fuction()

为啥这样就可以了

为你bu再恋 发表于 2021-4-18 10:51:40

昨非 发表于 2021-4-18 10:47
因为你多了一个return x
这个return执行的时候刚好是for循环进行完的时候
此时,x=999,返回值返回给最后 ...

懂了,多谢大佬

昨非 发表于 2021-4-18 10:53:54

为你bu再恋 发表于 2021-4-18 10:51
懂了,多谢大佬

额,没有最佳答案的话也可以右下角评分加个贡献
算是鼓励下回答问题的同学(厚颜无耻{:10_245:})
页: [1]
查看完整版本: 水仙花