鱼C论坛

 找回密码
 立即注册
查看: 2564|回复: 3

[已解决]求助009讲课后题:水仙花数

[复制链接]
发表于 2020-2-20 10:29:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这个程序哪里有问题呢?为什么我得不到答案?

1. 编写一个程序,求 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。


num=100
i=num
sum=0
while num<1000:
    while i:
        a = i % 10
        sum = sum + (a**3)
        i = i // 10

    if num==sum:
        print(num)
        
    num+=1
最佳答案
2020-2-20 10:34:51
两个赋值要放在循环中
  1. num=100

  2. while num<1000:
  3.     i=num
  4.     sum=0
  5.     while i:
  6.         a = i % 10
  7.         sum = sum + (a**3)
  8.         i = i // 10

  9.     if num==sum:
  10.         print(num)
  11.         
  12.     num+=1
复制代码

009讲的一道题

009讲的一道题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-20 10:34:51 | 显示全部楼层    本楼为最佳答案   
两个赋值要放在循环中
  1. num=100

  2. while num<1000:
  3.     i=num
  4.     sum=0
  5.     while i:
  6.         a = i % 10
  7.         sum = sum + (a**3)
  8.         i = i // 10

  9.     if num==sum:
  10.         print(num)
  11.         
  12.     num+=1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-20 10:39:11 | 显示全部楼层
你的循环中,i的值除了第一次是100,剩下的值都是0,i值不改变,当然就不会有答案了。改正如下:
  1. num=100
  2. while num<1000:
  3.     sum=0
  4.     i=num
  5.     while i:
  6.         a = i % 10
  7.         sum = sum + (a**3)
  8.         i = i // 10

  9.     if num==sum:
  10.         print(num)
  11.         
  12.     num+=1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-20 10:39:32 | 显示全部楼层
        把这 3 句代码的位置调整一下
  1. i=num
  2. sum=0
  3. while num<1000:
复制代码

       改为
  1. while num<1000:
  2.     i=num
  3.     sum=0
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-2 16:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表