15588686105 发表于 2020-8-4 15:03:34

寻找水仙花数

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:06:14

本帖最后由 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

zltzlt 发表于 2020-8-4 15:07:28

十位和百位的计算有误

15588686105 发表于 2020-8-4 15:25:19

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
如果这样呢 对吗

15588686105 发表于 2020-8-4 15:25:57

zltzlt 发表于 2020-8-4 15:07
十位和百位的计算有误

谢谢

llx1995 发表于 2020-8-4 15:27:45

for each in range(100, 1000):
    # 个位               十位                  百位
    if (each % 10) ** 3 + (each // 10 % 10) ** 3 + (each // 100) ** 3 == each:
      print(each)
你个十位数,百位数求错了啊。

sunrise085 发表于 2020-8-4 16:33:17

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、你可能对水仙花数有所误解,水仙花数,是三位自幂数,也就是必须是三位数,然后每一位的三次幂之和等于本身,一位自幂数叫独身数,四位自幂数叫四叶玫瑰数,五位自幂数叫五角星数……

15588686105 发表于 2020-8-5 12:14:01

sunrise085 发表于 2020-8-4 16:33
1、你这是死循环啊。每次循环i都先被赋值为0,然后再自加1,没有循环结束条件。
2、sum里面的这个推导式 ...

明白了感谢感谢
页: [1]
查看完整版本: 寻找水仙花数