我下何从 发表于 2020-5-7 16:04:21

011讲动动手,感到十分困惑

steps = 7
i = 1
FIND = False

while i < 100:
    if (steps%2==1) and (steps%3==2) and (steps%5==4) and (steps%7==0):
       FIND = True
       break
    else:
       steps= steps *i                                                                      %为什么这行是这样就得不出答案呢????
    i = i + 1

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


qiuyouzhi 发表于 2020-5-7 16:08:02

这样可能把答案跳过去了。

zltzlt 发表于 2020-5-7 16:22:10

这样是找不到答案的,打印一下 steps 每次循环就能看出来

steps = 7
i = 1
FIND = False

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

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

sunrise085 发表于 2020-5-7 16:25:33

你这样写,类似于阶乘了,跳跃台阶数的太大,正常应该是等差
第一次循环 step=7
第二次循环 step=7*1=7
第三次循环 step=7*2=14
第四次循环 step=14*3=42
第五次循环 step=42*4=168
第六次循环 step=168*5=840
……

我下何从 发表于 2020-5-8 19:50:04

懂了,谢谢老哥哈
页: [1]
查看完整版本: 011讲动动手,感到十分困惑