鱼C论坛

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

水仙花问题

[复制链接]
发表于 2023-11-17 09:51:42 | 显示全部楼层 |阅读模式

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

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

x
for i in range(100,1000):
    while i<1000:      
        if i == (i//100)**3 +(i//10 %10)**3 + (i%10)**3: #判断该数字是否等于三项立方和

        print(i,"是一个水仙花数。")
    i+=1

        break
这个代码错误在哪呢,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-17 09:51:48 | 显示全部楼层
在你的代码中,while 循环是多余的,并且会导致你的程序陷入无限循环。你可以直接使用 for 循环来遍历 100 到 999 之间的数字,并且在循环体内进行水仙花数的判断。以下是修改后的代码:
for i in range(100, 1000):
    if i == (i//100)**3 + (i//10 % 10)**3 + (i%10)**3: # 判断该数字是否等于三项立方和
        print(i, "是一个水仙花数。")

这样就可以正确地找出 100 到 999 之间的水仙花数了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-17 09:52:41 | 显示全部楼层
这段代码中存在一些逻辑错误。让我们来看看问题所在:

1. while i<1000 这个循环条件是多余的,因为使用了for i in range(100, 1000),已经确保了i的取值范围在100到999之间。
2. i+=1 应该放在 if 条件判断之外,否则会导致 i 的增加与判断条件脱离关系。
3. break语句也放错位置了,会导致循环在第一次迭代后就被中断。

下面是修改后的代码:
for i in range(100, 1000):    if i == (i // 100) [b] 3 + (i // 10 % 10) [/b] 3 + (i % 10) ** 3:  # 判断该数字是否等于三项立方和        print(i, "是一个水仙花数。")
通过以上修改,代码将按预期进行迭代并输出水仙花数。

希望这个解答对你有所帮助!如果有任何疑问,欢迎继续提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-18 15:51:53 | 显示全部楼层
不需要while循环、i+=1和break
for i in range(100,1000) 会将 i 依次从 100 到 999 赋值,每次赋值执行一次 if 语句,这就足够了
for i in range(100,1000):
    if i == (i//100)**3 +(i//10 %10)**3 + (i%10)**3: #判断该数字是否等于三项立方和
        print(i,"是一个水仙花数。")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 02:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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