小明同学xxm 发表于 2020-7-4 21:36:25

python018讲习题求水仙花数求助

题目要求:如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 = 1^3+5^3+3^3,因此153是一个水仙花数。编写一个程序,找出所有的水仙花数。

我的代码如下
x=100
>>> while 100<=x<=999:
        a=x/100
        b=x%10
        c=(x/10)%10
        if a*a*a+b*b*b+c*c*c==x:
                print(x)
                x +=1
        else:
                x +=1

               
>>>
>>> print(x)
1000

没有显示结果 当我print(x)显示为1000? 这是怎么回事呢 是我的代码哪里有问题吗

青出于蓝 发表于 2020-7-4 21:37:10

i=100
while i<=999:
    t=i//100
    u=i//10%10
    p=i%10
    w=t*t*t+u*u*u+p*p*p
    if i==w:
      print(i,end=' ')
    i+=1

Twilight6 发表于 2020-7-4 21:38:03

本帖最后由 Twilight6 于 2020-7-4 21:44 编辑



因为你的 while 循环退出条件是 100<=x<=999 ,而你的while 循环内都是使得 x 增大的,所以你的大于一百的条件是多余的哈,因为你一开始时候就是100,而循环中只会增大

x<=999,就是直到 x = 1000 才会不满足循环条件而退出,所以最后退出时候即为 x = 1000 ,而此时你在打印 x ,肯定打印的结果为 1000了~

你的代码 a*a*a 之类的可以直接用 幂运算符来替代哈即 a**3 == a*a*a

x=100
while x<=999:
    a=x//100
    b=x%10
    c=(x//10)%10
    if a**3+b**3+c**3==x:
            print(x)
            x +=1
    else:
            x +=1

还有一点哈,你的代码里面不能用 除法,应该用 // 地板除,因为如果你用除法,会导致可能除出小数

导致你三次方之和不会等于 原来~,所以改成地板除 // 就好


青出于蓝 发表于 2020-7-4 21:38:11

水仙花类似问题很多很多很多了,尝试用搜索功能找到自己的答案喔{:10_254:}

乘号 发表于 2020-7-4 22:04:21

x=100
while x<=999:
    a=x//100
    b=x%10
    c=(x//10)%10
    if a**3+b**3+c**3==x:
            print(x)
            x +=1
    else:
            x +=1
这次帮你,下次请先搜索类似问题

小明同学xxm 发表于 2020-7-4 22:08:18

本帖最后由 小明同学xxm 于 2020-7-4 22:11 编辑

好的 谢谢

Twilight6 发表于 2020-7-4 22:11:31

小明同学xxm 发表于 2020-7-4 22:08
那为什么没有体现符合条件的水仙花数而只打印出1000呢


上面我的代码已经帮你改好了哈~你试着运行下就会发现效果~

因为循环过程中 x 的值一直在增大,只有你在循环过程中,x 循环到这个值了,此时打印才有效果,否则下一次循环 x + 1 了就不是原先的数值了,所以最后打印只能打印 1000

你如果想通过一次性打印,你可以 设置个列表来保存这个值如下代码:
x=100
temp = []
while x<=999:
    a=x//100
    b=x%10
    c=(x//10)%10
    if a**3+b**3+c**3==x:
      temp.append(x)
      x +=1
    else:
      x +=1
      
      
print(temp)

小明同学xxm 发表于 2020-7-4 22:12:44

乘号 发表于 2020-7-4 22:04
这次帮你,下次请先搜索类似问题

好 谢谢

小明同学xxm 发表于 2020-7-4 22:15:12

青出于蓝 发表于 2020-7-4 21:38
水仙花类似问题很多很多很多了,尝试用搜索功能找到自己的答案喔

嗯嗯 下次会的
页: [1]
查看完整版本: python018讲习题求水仙花数求助