medoc 发表于 2020-3-6 11:16:47

第006讲爱因斯坦的阶梯求解循环时的一个疑问

我在参考小甲鱼的代码后,写了下述代码,不同之处在于while后面的条件我写的是x <= 200,小甲鱼的参考答案中是i <= 100。奇怪的是我的代码运行后是空白页面,没报错也没反应,想知道我的思路出了什么问题,肯定大神赐教!
x=7
i=1
flag=0

while x <= 200:
    if (x%2==1) and (x%3==2) and (x%5==4) and (x%6==5) and (x%7==0):
      flag=1
    else:
      x=7*(i+1)
    i += 1
   
if flag==1:
    print('阶梯数为',x)
else:
    print('目前指定范围无此阶梯数')

qiuyouzhi 发表于 2020-3-6 11:19:03

符合条件之后就要跳出循环了:
x=7
i=1
flag=0

while x <= 200:
    if (x%2==1) and (x%3==2) and (x%5==4) and (x%6==5) and (x%7==0):
      flag=1
      break
    else:
      x=7*(i+1)
    i += 1
   
if flag==1:
    print('阶梯数为',x)
else:
    print('目前指定范围无此阶梯数')

zltzlt 发表于 2020-3-6 11:20:24

当 x 符合要求时执行 if 下面的内容。if 中没有改变 x,所以 x 永远不会 <= 200 。

如果硬要这样就加上一个 break ,表示一找到符合条件的数就跳出循环。代码:

x = 7
i = 1
flag = 0

while x <= 200:
    if (x % 2 == 1) and (x % 3 == 2) and (x % 5 == 4) and (x % 6 == 5) and (x % 7 == 0):
      flag = 1
      break
    else:
      x = 7 * (i + 1)
    i += 1

if flag == 1:
    print('阶梯数为', x)
else:
    print('目前指定范围无此阶梯数')

medoc 发表于 2020-3-6 11:28:42

qiuyouzhi 发表于 2020-3-6 11:19
符合条件之后就要跳出循环了:

好的,明白了,谢谢你!

medoc 发表于 2020-3-6 11:29:18

zltzlt 发表于 2020-3-6 11:20
当 x 符合要求时执行 if 下面的内容。if 中没有改变 x,所以 x 永远不会

好的,非常感谢!

Miss_Choco 发表于 2020-4-29 17:44:36

zltzlt 发表于 2020-3-6 11:20
当 x 符合要求时执行 if 下面的内容。if 中没有改变 x,所以 x 永远不会

新人有点懵。请问为什么一开始会想到用100这个值而不是其他呢?依据是什么呢?

zltzlt 发表于 2020-4-29 17:53:06

Miss_Choco 发表于 2020-4-29 17:44
新人有点懵。请问为什么一开始会想到用100这个值而不是其他呢?依据是什么呢?

100 不是固定的,可以换成其他的,比如 50 、200,只是不要低于 阶梯数 / 7 就行了(不然在指定的范围内找不到阶梯数)
页: [1]
查看完整版本: 第006讲爱因斯坦的阶梯求解循环时的一个疑问