鱼C论坛

 找回密码
 立即注册
查看: 1405|回复: 4

[已解决]第九讲第一题不知道为啥会这样

[复制链接]
发表于 2020-7-2 13:08:08 | 显示全部楼层 |阅读模式

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

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

x
print("------------------------------100~999水仙花数------------------------------")
for num in range(100,1000):
     result = 0
     for i in str(num):
         result += int(i) ** 3
         if num == result:
             print(num)

运行以后是153 370 370 371 407 不知道为什么会出现两个370
最佳答案
2020-7-2 13:10:39
本帖最后由 Twilight6 于 2020-7-2 13:14 编辑




你试着代入就知道为什么了,当循环到 370 时候:

第一次循环 result 开始时等于 0 先加上 3 的 3次方 等于 27

第二次循环 result 等于 27 加上 7 的 三次方 等于 27+343  这个时候已经等于了  370 满足了 if 条件 进行一次打印

第三次循环 result 最后循环到了 0 的三次方 ,370+0还是等于370,再次满足 if 条件 进行一次打印



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-2 13:10:39 | 显示全部楼层    本楼为最佳答案   
本帖最后由 Twilight6 于 2020-7-2 13:14 编辑




你试着代入就知道为什么了,当循环到 370 时候:

第一次循环 result 开始时等于 0 先加上 3 的 3次方 等于 27

第二次循环 result 等于 27 加上 7 的 三次方 等于 27+343  这个时候已经等于了  370 满足了 if 条件 进行一次打印

第三次循环 result 最后循环到了 0 的三次方 ,370+0还是等于370,再次满足 if 条件 进行一次打印



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-2 13:15:14 | 显示全部楼层
楼上正解,把代码改成这样就行:
print("------------------------------100~999水仙花数------------------------------")
for num in range(100,1000):
    result = 0
    for i in str(num):
        result += int(i) ** 3
        if num == result:
            print(num)
            break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-2 13:16:49 | 显示全部楼层
Twilight6 发表于 2020-7-2 13:10
你试着代入就知道为什么了,当循环到 370 时候:

第一次循环 result 开始时等于 0 先加上 3 的 3 ...

噢 明白了 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-2 13:17:24 | 显示全部楼层
qiuyouzhi 发表于 2020-7-2 13:15
楼上正解,把代码改成这样就行:

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-20 04:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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