鱼C论坛

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

[已解决]看看这里出了什么问题

[复制链接]
发表于 2018-12-2 13:43:17 | 显示全部楼层 |阅读模式

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

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

x
要求10~1000的水仙花数,就是各个数位上的立方和等于原数字。代码如下:
for number in range (10,1000):
    b=0
    for i in str(number):
        b=int(i)**3+b
        if b==number:
            print(number)
输出结果是这样的
捕获.JPG
为什么370输出了两次?
最佳答案
2018-12-2 15:45:21
  1. for number in range (10,1000):
  2.     b=0
  3.     for i in str(number):
  4.         b=int(i)**3+b
  5.     if b==number:
  6.         print(number)
复制代码

改一下缩进就好了,因为你37就满足,加个0的立方当然也满足了,
你把判断放后边就行
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-12-2 15:25:44 | 显示全部楼层
你应该是内循环完成一次才进行一次判断的,就是得到三位数各个位上立方和之后才进行判断,不然就像这样, 3**3 + 7**3 == 370,输出一次,3**3 + 7 ** 3 + 0 ** 3 == 370
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 15:34:37 | 显示全部楼层
因为你b默认给了个0的值,导致37和370输出的结果都是370。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-2 15:45:21 | 显示全部楼层    本楼为最佳答案   
  1. for number in range (10,1000):
  2.     b=0
  3.     for i in str(number):
  4.         b=int(i)**3+b
  5.     if b==number:
  6.         print(number)
复制代码

改一下缩进就好了,因为你37就满足,加个0的立方当然也满足了,
你把判断放后边就行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-23 04:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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