鱼C论坛

 找回密码
 立即注册
查看: 36|回复: 1

爱因斯坦那个阶梯数那个题 我这样打为什么不对啊

[复制链接]
发表于 昨天 18:12 | 显示全部楼层 |阅读模式

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

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

x
steps = 7
i = 1
FIND = False
while i < 100:
    if steps * i % 2 == 1 and steps * i % 3 == 2 and steps * i % 5 == 4 and steps * i % 6 == 5 :
        FIND = True
      break
    else:
         FIND = False
    i = i + 1

if FIND == True:
           print('阶梯数是:', steps)
else:
           print('在运行程序范围内找不到答案')
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 昨天 18:12 | 显示全部楼层
爱因斯坦那个阶梯数那个题 我这样打为什么不对啊


问题出在几个地方:

1. 没有检查除以7余数为0的条件  
题目要求每步上7阶正好走完,也就是阶梯数 % 7 == 0。  
你虽然用 steps = 7 作为基数,但 steps * i 已经是7的倍数,所以这步其实是隐式满足的。不过为了代码清晰,最好显式加上这个条件。

[b]2. 输出错了,你打印的是固定的 steps 而不是找到的 steps * i  
找到解后你打印 '阶梯数是:', steps,但 steps = 7 恒定,结果永远是7。正确的应该是打印 steps * i

3. break 的缩进有问题  
你的 breakif 的缩进不一致,会导致语法错误或逻辑错误。应该和 FIND = True 在同一缩进级内。

[b]4. 不需要 FIND = False 放在 else  
每轮循环直接判断,找到就 break,不用每次重置 FIND

修正后的代码示例:

  1. steps = 7
  2. i = 1
  3. FIND = False
  4. while i < 100:
  5.     if (steps * i % 2 == 1 and steps * i % 3 == 2
  6.         and steps * i % 5 == 4 and steps * i % 6 == 5
  7.         and steps * i % 7 == 0):
  8.         FIND = True
  9.         break
  10.     i = i + 1

  11. if FIND == True:
  12.     print('阶梯数是:', steps * i)    # 关键:输出步数乘以倍数
  13. else:
  14.     print('在运行程序范围内找不到答案')
复制代码


注意:因为 steps=7 已经是7的倍数,实际上最后判断 %7==0 永远是True,可以不写。但加上更通用,万一以后改变 steps 的值也能用。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-7-13 00:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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