逆鳞丶樱之羽 发表于 2020-11-27 20:15:07

迭代中的问题

本帖最后由 逆鳞丶樱之羽 于 2020-11-27 20:59 编辑

如题,上代码
def daffodils():
    ma_x = int(input('最大索取范围:'))
    for each in range(100,ma_x):
      su_m = 0
      temp = each
      while temp:
            su_m = su_m + (temp%10)**3
            temp //= 10
      if su_m == each:
            print(each)
    return
            
这是正常执行的
如下图,问题在我画的红圈中。
为什么第一个和第三个并不会执行
求解释,尽量解释清楚一点,谢谢。

逃兵 发表于 2020-11-27 20:56:58

你可以在不理解的地方打印自己的疑问

for each in range(100,110):
    su_m = 0
    temp = each
    while temp:
      su_m = su_m+(temp%10)**3
      temp //= 10
    print('su_m=%d , temp=%d'%(su_m,temp))
    if su_m == temp:
      print(each)



只有temp == 0时,才会跳出while循环
所以temp 是一直等于0的
相当于判断 if su_m == 0
一直不会成立呀

逆鳞丶樱之羽 发表于 2020-11-27 21:00:27

逃兵 发表于 2020-11-27 20:56
你可以在不理解的地方打印自己的疑问




帖子已改,问题在后面的if条件中

伊格利斯 发表于 2020-11-27 21:02:10

缩进的问题,if前面再按一次Tab

逆鳞丶樱之羽 发表于 2020-11-27 21:10:59

伊格利斯 发表于 2020-11-27 21:02
缩进的问题,if前面再按一次Tab

不太明白你的意思。这三个都可以不报错运行,只是第一个和第三个没有执行结果。

逃兵 发表于 2020-11-27 21:15:13

逆鳞丶樱之羽 发表于 2020-11-27 21:00
帖子已改,问题在后面的if条件中

你运行一下我发的那段代码,看一下能找出来问题吗

逆鳞丶樱之羽 发表于 2020-11-27 21:20:09

逃兵 发表于 2020-11-27 21:15
你运行一下我发的那段代码,看一下能找出来问题吗

我悟了,谢谢。{:10_266:}{:10_266:}
页: [1]
查看完整版本: 迭代中的问题