|  | 
 
| 
题目来源:零基础学Python,第009讲,课后习题,动动手第1题。
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 原题:编写一个程序,求 100~999 之间的所有水仙花数。
 如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。
 
 代码一:
 sum = 0
 for i in range(100,1000):
 temp = i
 while temp:
 sum = sum + (temp%10)**3
 temp //= 10
 if sum == i:
 print(i)
 
 代码二:
 for i in range(100, 1000):
 sum = 0
 temp = i
 while temp:
 sum = sum + (temp%10) ** 3
 temp //= 10
 if sum == i:
 print(i)
 
 附图为代码一和代码二分别运行的结果,求大神分析下为什么代码一运行失败了???🙏🙏🙏
 
 
 
 
 
 
 
把 sum = 0 从第一行改到第二行就好了,因为每次算完结果 sum的值没有重置,还在原来基础继续求和。 复制代码for i in range(100,1000):
    sum = 0
    temp = i
    while temp:
        sum = sum + (temp%10)**3
        temp //= 10
    if sum == i:
        print(i)
 | 
 |