z526348 发表于 2020-1-6 16:17:41

python第六讲课后-爱因斯坦难题 求助

题目:
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
(小甲鱼温馨提示:步子太大真的容易扯着蛋~~~)

答案:
x = 7
i = 1
flag = 0

while i <= 100:
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
      flag = 1
    else:
      x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
    i += 1

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

请问flag变量在上面代码中是用来做什么的?{:5_94:}

Hermeszzy 发表于 2020-1-6 16:32:25

flag是标志位,当测试到的数值满足“若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶”时置“1”,说明找到答案了,随即输出结果

zltzlt 发表于 2020-1-6 18:02:57

flag 就是一个标志,一开始初始化为 0。当程序找到阶梯数时将 flag 设定为 1。最后判断 flag 的值是否为 1,为 1 代表已经找到了阶梯数。

玉莹 发表于 2021-10-9 10:19:51

请问 i = i + 1 为什么不能放到 else 条件语句中呢,谢谢

傻眼貓咪 发表于 2021-10-9 10:52:05

代码:输出结果:阶梯数是:119
页: [1]
查看完整版本: python第六讲课后-爱因斯坦难题 求助