hhjdsd 发表于 2020-3-26 21:58:02

求助。。。

做作业时遇到的问题,要求是弄一个寻找出所有水仙花数的函数,我看着没啥问题,但就是不行,技术有限,代码有点长,见谅见谅。。


>>> def function1():
        list1 = []
        for i in range(100,1000):
                if (i-(i//10*10))**(i-(i//10*10)) + ((i-(i-(i//10*10)+(i//100*100)))/10)**(i-(i//10*10)) + (i//100**(i-(i//10*10))) == i:
                        list1.append(i)
                        continue
                else:
                        continue
        print(list1)

       
>>> function1()
[]

qiuyouzhi 发表于 2020-3-26 22:05:29

你把list1定义到外面,不然每次continue
就会重置列表

sunrise085 发表于 2020-3-26 22:12:24

在你的程序基础上帮你修改了
你的程序中求取各位是不对的
另外,水仙花数是各个位的三次方之和与原数相等称之为水仙花数

def function1():
    list1 = []
    for i in range(100,1000):
      if ((i%10)**3 + (i%100//10)**3 + (i//100)**3) == i:
            list1.append(i)
            continue
      else:
            continue
    print(list1)

      
function1()

txxcat 发表于 2020-3-26 22:23:30

你是不是对水仙花数的算法有误解呀?为什么会有**(i-(i//10*10)),水仙花数每位数的3次冥之和等于自身,你的算法完全不对。

hhjdsd 发表于 2020-3-26 22:32:26

在我这代码别的地方还有些问题时,我也是弄每个3次幂的,结果一不小心被我一个朋友误导了。{:10_266:}
页: [1]
查看完整版本: 求助。。。