寻找水仙花数
def numc():result = []
for each in range(100,1000):
if (each%10)**3+(each%100)**3+(each%1000)**3==each:
result.append(each)
return result
这个函数用来讯息找水仙花数的问题出在哪里呢 本帖最后由 sunrise085 于 2020-8-4 15:14 编辑
你的if语句的第一项是个位,第二项不是十位,第三项也不是百位
def numc():
result = []
for each in range(100,1000):
if (each%10)**3+(int(each%100/10))**3+(int(each/100))**3==each:
result.append(each)
return result
还可以先转字符串,再转回数字
def numc():
result = []
for each in range(100,1000):
if sum(int(i)**3 for i in str(each))==each:
result.append(each)
return result 十位和百位的计算有误 sunrise085 发表于 2020-8-4 15:06
你的if语句的第一项是个位,第二项不是十位,第三项也不是百位
def numf():# 寻找水仙花数
answer=0
result=[]
while True:
i=0
i=i+1
if sum(int(i)**3 for each in str(i))==i:
result.append(i)
return result
如果这样呢 对吗 zltzlt 发表于 2020-8-4 15:07
十位和百位的计算有误
谢谢 for each in range(100, 1000):
# 个位 十位 百位
if (each % 10) ** 3 + (each // 10 % 10) ** 3 + (each // 100) ** 3 == each:
print(each)
你个十位数,百位数求错了啊。 15588686105 发表于 2020-8-4 15:25
def numf():# 寻找水仙花数
answer=0
result=[]
1、你这是死循环啊。每次循环i都先被赋值为0,然后再自加1,没有循环结束条件。
2、sum里面的这个推导式有问题,for后面是each,而前面是i,应该是sum(int(each)**3 for each in str(i))
3、你可能对水仙花数有所误解,水仙花数,是三位自幂数,也就是必须是三位数,然后每一位的三次幂之和等于本身,一位自幂数叫独身数,四位自幂数叫四叶玫瑰数,五位自幂数叫五角星数…… sunrise085 发表于 2020-8-4 16:33
1、你这是死循环啊。每次循环i都先被赋值为0,然后再自加1,没有循环结束条件。
2、sum里面的这个推导式 ...
明白了感谢感谢
页:
[1]