关于09讲的水仙花数
def flower():for i in range(100,1000):
for t in str(i):
if sum(int(t)**3) == i:
print(i,end=' ')
我想问下,我这代码错在哪里,要怎么修改呀
照你的思路代码应该这样改:
def flower():
for i in range(100, 1000):
s = 0
for t in str(i):
s += int(t) ** 3
if s == i:
print(s) 错误原因是每次循环因子t代表的数字仅仅只是三位数之中的某一位,所以if条件是总不能成立的,sum这个方法相当于没有用到,你需要用一个变量如x = 0,每一次循环将t的三次方加进去,最后判断这个x是否等于i,才是正确的做法。 print("…………求100-999之间的所有水仙花数…………")
#如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数
for i in range(100,999,1):
a = i%10
b = i%100//10
c = i//100
if(i==a**3+b**3+c**3):
print(i)
print("结束")
这是我自己的代码,感觉这样很直白
你的if条件中t是i的一位,对i的一位进行求和肯定没有符合条件的。实际上你的sum没有什么用,因为每次内层循环计算的只有一位,根本用不到求和,需要将i的三位进行求和
def flower():
for i in range(100,1000):
if sum(int(t)**3 for t in list(str(i)))==i:
print(i,end=' ')
flower()
页:
[1]