爱吃肉的DDdd 发表于 2024-11-22 14:54:08

找7的倍数问题

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.

FishC 发表于 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 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 找7的倍数问题