飞鱼python 发表于 2021-3-9 21:24:19

请大佬帮助

题目是:爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上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)
    i += 1

if flag == 1:
    print('阶梯数是:', x)
else:
    print('在程序限定的范围内找不到答案!')
这里flag = 0,代表什么。 然后flag =1.又代表什么?还有后面为什么不写(x%7==0)了?
新手上路,恳请大神百忙之中帮忙解答

小伤口 发表于 2021-3-9 21:32:48

flag=0
只是为了制造这个变量
flag就是起到一个中间商的作用
当flag==1时使他在while外面打印
如果没有flag
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):
      print('阶梯数是:', x)
    else:
      x = 7 * (i+1)
    i += 1

直接输入就会打印很多重复结果

Daniel_Zhang 发表于 2021-3-9 22:51:16

本帖最后由 Daniel_Zhang 于 2021-3-13 14:16 编辑

flag 英文里面是什么意思?旗帜

flag 相当于一个旗帜,找到了,就是 1,没找到就是 0

1 True, 0 False

默认是没找到的,所以是 0 也就是 False

然后之所以不写 x%7==0,你注意看下面的 else

x = 7 * (i+1) 这个就用来持续走下去,持续寻找目标台阶

因为本来就是 7 步 一走,最后写不写 x%7==0 都是无所谓的,必定会成立

不写反而还省了事儿,无论如何你都得要 x = 7 * (i+1) 这一行,因为你压根不需要去检查除了 7 的倍数以外的阶梯。无论如何,除了 7 的倍数的 阶梯数,其他的阶梯都不可能满足 x%7==0 的条件
页: [1]
查看完整版本: 请大佬帮助