17876893804 发表于 2020-7-7 17:51:51

求助:python第六讲“爱因斯坦的难题”解答

t = 0
s = 0
while t >= 0:
    if (t % 2 == 1) and (t % 3 == 2) and (t % 5 == 4) and (t % 6 == 5) and (t % 7 == 0):
      s = 1
    else:
      t = t + 1
      
if s == 1:
    print('阶梯数是:', t)
else:
    print('在程序限定的范围内找不到答案!')

小甲鱼的铁粉 发表于 2020-7-7 17:57:15

t = 0
s = 0
while s == 0:
    if (t % 2 == 1) and (t % 3 == 2) and (t % 5 == 4) and (t % 6 == 5) and (t % 7 == 0):
      s = 1
    else:
      t = t + 1
      
if s == 1:
    print('阶梯数是:', t)
else:
    print('在程序限定的范围内找不到答案!')
这样就可以了吧

小甲鱼的铁粉 发表于 2020-7-7 17:58:18

楼主 你的代码里面的while循环缺少退出循环的条件

17876893804 发表于 2020-7-7 17:59:51

小甲鱼的铁粉 发表于 2020-7-7 17:57
这样就可以了吧

请问为什么不能用while t >= 0呢?谢谢!

小甲鱼的铁粉 发表于 2020-7-7 18:02:54

17876893804 发表于 2020-7-7 17:59
请问为什么不能用while t >= 0呢?谢谢!

你看哈,代码里面的t初始值为0,然后进入while循环,如果if语句不成立,t会加1,那么在循环里t是永远大于0的,while循环的判定条件t >= 0是永远成立的,所以会一直循环下去,这时候就错了,需要找新的判定循环的方式,s正合适

Tip0 发表于 2020-7-7 18:09:50

因为你循环内 t 都是+1的,所以这个循环条件会始终成立导致死循环

17876893804 发表于 2020-7-7 18:10:09

小甲鱼的铁粉 发表于 2020-7-7 18:02
你看哈,代码里面的t初始值为0,然后进入while循环,如果if语句不成立,t会加1,那么在循环里t是永远大于 ...

懂了!谢谢!

小甲鱼的铁粉 发表于 2020-7-7 18:11:13

17876893804 发表于 2020-7-7 18:10
懂了!谢谢!

最佳是对我最大的鼓励,麻烦设置最佳{:10_297:}

rubiness 发表于 2020-7-7 18:18:33

没看懂

yg飞许 发表于 2023-1-5 22:50:46

本帖最后由 yg飞许 于 2023-1-5 22:53 编辑

rubiness 发表于 2020-7-7 18:18
没看懂

t = 0
s = 0
while s == 0:
    if (t % 2 == 1) and (t % 3 == 2) and (t % 5 == 4) and (t % 6 == 5) and (t % 7 == 0):
      s = 1    #s = 1 是跳出循环
    else:
      t = t + 1    #这里是关键,当t加到119时,(满足了if后条件),( 同时也跳出循环)
      
if s == 1:   #故开始执行
    print('阶梯数是:', t)#打出119
else:
    print('在程序限定的范围内找不到答案!')
页: [1]
查看完整版本: 求助:python第六讲“爱因斯坦的难题”解答