爱你的小优 发表于 2020-9-16 09:55:57

python 第006讲 计算台阶问题,看不懂代码

爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上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看不懂是啥,求解





疾风怪盗 发表于 2020-9-16 09:59:44

就是作为一个标志,表示找到了符合if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):判断的x

昨非 发表于 2020-9-16 10:03:30

作为合理答案存在与否的标记

爱你的小优 发表于 2020-9-16 10:21:48

昨非 发表于 2020-9-16 10:03
作为合理答案存在与否的标记

懵懵懂懂,下午我再看看吧{:10_266:}

爱你的小优 发表于 2020-9-16 10:23:34

疾风怪盗 发表于 2020-9-16 09:59
就是作为一个标志,表示找到了符合if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):判断的x

程序是咋循环的又看不懂了{:10_250:}

挥舞乾坤 发表于 2020-9-16 10:31:49

爱你的小优 发表于 2020-9-16 10:23
程序是咋循环的又看不懂了

就是从1到100一直循环,满足条件了标志1,没满足x += 7就可以了,这个代码写的有点繁琐了,这样写
for x in range(7, 700,7):
    if x%2==1 and x%3==2 and x%5==4 and x%6==5:
      print('阶梯数是:', x)
      break
else:
    print('在程序限定的范围内找不到答案!')

疾风怪盗 发表于 2020-9-16 10:33:14

爱你的小优 发表于 2020-9-16 10:23
程序是咋循环的又看不懂了

初始i是0,while执行一次累加1,一直到i=101时while停止循环
初始x是7,while每次执行都把x去做if判断,如果符合的,flag就标志为1,说明找到了,不符合if的,执行else下代码对x做运算,求出新的x,进入下一个while判断

爱你的小优 发表于 2020-9-16 10:39:46

疾风怪盗 发表于 2020-9-16 10:33
初始i是0,while执行一次累加1,一直到i=101时while停止循环
初始x是7,while每次执行都把x去做if判断, ...

好的,我下午有问题再问

疾风怪盗 发表于 2020-9-16 10:41:29

爱你的小优 发表于 2020-9-16 10:39
好的,我下午有问题再问

{:10_324:}先结一个帖子,有问题再开新求助吧

爱你的小优 发表于 2020-9-16 14:11:02

疾风怪盗 发表于 2020-9-16 10:41
先结一个帖子,有问题再开新求助吧

好的
页: [1]
查看完整版本: python 第006讲 计算台阶问题,看不懂代码