| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
题目来源:零基础学Python,第009讲,课后习题,动动手第1题。 
 
原题:编写一个程序,求 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)
 
  复制代码 
 
 
 |   
 
 
 
 |