鱼C论坛

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

[已解决]找7的倍数问题

[复制链接]
发表于 2024-11-22 14:54:08 | 显示全部楼层 |阅读模式

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

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

x
steps = 7
i = 1
FIND = False

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

if FIND == True:
    print('阶梯数是:',steps)
else:
    print('在程序限定的范围内找不到答案!')

代码如上,求助大佬们,这是找7的倍数,一开始steps=7,已经满足第一个if的条件,为什么运行出来答案是119.
最佳答案
2024-11-22 15:00:32
这个问题涉及到代码逻辑的顺序。虽然 `steps = 7` 符合条件 `(steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5)` ,但在你开始循环之前,`steps` 被重新设定为 `7 * (i + 1)` ,即 `steps = 14`(因为 `i = 1` )。

在每次循环中, `steps` 的值都是 `7` 的倍数增加,从 `14` 开始,于是需要检测到下一个满足条件的 `steps` ,这个满足条件的 `steps` 恰好是 `119` 。

如果你希望一开始就能够判断 `steps = 7` ,建议在 `while` 循环开始之前添加一个初始条件判断。这是优化后的代码:
steps = 7
FIND = False

# 初始条件判断
if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
    FIND = True

# 如果初始条件未找到,进入循环查找
i = 1
while not FIND and i < 100:
    steps = 7 * (i + 1)
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
        FIND = True
    i = i + 1

if FIND:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')

这样修改后,如果 `steps = 7` 满足条件,将立即输出,而不需要进入 `while` 循环。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-11-22 15:00:32 | 显示全部楼层    本楼为最佳答案   
这个问题涉及到代码逻辑的顺序。虽然 `steps = 7` 符合条件 `(steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5)` ,但在你开始循环之前,`steps` 被重新设定为 `7 * (i + 1)` ,即 `steps = 14`(因为 `i = 1` )。

在每次循环中, `steps` 的值都是 `7` 的倍数增加,从 `14` 开始,于是需要检测到下一个满足条件的 `steps` ,这个满足条件的 `steps` 恰好是 `119` 。

如果你希望一开始就能够判断 `steps = 7` ,建议在 `while` 循环开始之前添加一个初始条件判断。这是优化后的代码:
steps = 7
FIND = False

# 初始条件判断
if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
    FIND = True

# 如果初始条件未找到,进入循环查找
i = 1
while not FIND and i < 100:
    steps = 7 * (i + 1)
    if (steps % 2 == 1) and (steps % 3 == 2) and (steps % 5 == 4) and (steps % 6 == 5):
        FIND = True
    i = i + 1

if FIND:
    print('阶梯数是:', steps)
else:
    print('在程序限定的范围内找不到答案!')

这样修改后,如果 `steps = 7` 满足条件,将立即输出,而不需要进入 `while` 循环。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 01:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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