5402285zz 发表于 2021-4-10 15:53:09

课后作业006 爱因斯坦的难题 求大佬解惑

i = 7
while (i % 2 != 1) and (i % 3 != 2) and (1 % 5 != 4) and (i % 6 != 5):
      i*=2
print(i)

不知道为什么 跑起来直接等于 7
(纯小白,莫嫌弃T_T)

逃兵 发表于 2021-4-10 16:21:34

while (i % 2 != 1) ...

7%2 = 1 ,不满足循环条件

直接跳出循环了

所以直接print(7)

5402285zz 发表于 2021-4-10 16:42:07

逃兵 发表于 2021-4-10 16:21
while (i % 2 != 1) ...

7%2 = 1 ,不满足循环条件


中间用 and 链接不是应该带都满足才可以跳出循环

逃兵 发表于 2021-4-10 17:04:11

5402285zz 发表于 2021-4-10 16:42
中间用 and 链接不是应该带都满足才可以跳出循环

都满足才会进入循环,有一条不满足就不进入循环了

5402285zz 发表于 2021-4-10 17:20:46

逃兵 发表于 2021-4-10 17:04
都满足才会进入循环,有一条不满足就不进入循环了

明白了,谢谢

5402285zz 发表于 2021-4-12 10:29:19

龙舞九天 发表于 2021-4-11 06:31
真的明自?!

我的理解是要符合while循环,必须满足while后跟的条件,当i = 7 时,不满足就直接跳出循环了,直接给出答案.但是我想不出改进方法,希望指点

5402285zz 发表于 2021-4-12 10:56:27

逃兵 发表于 2021-4-10 17:04
都满足才会进入循环,有一条不满足就不进入循环了

大佬,我这种方法没有可以改进的策略,小甲鱼的那种我平时不可能想的到.

逃兵 发表于 2021-4-12 12:12:03

5402285zz 发表于 2021-4-12 10:56
大佬,我这种方法没有可以改进的策略,小甲鱼的那种我平时不可能想的到.

i = 7
n = 1
while n==1:
      if (i%2==1) and (i%3==2) and (i%5==4) and (i%6==5) and (i%7==0):
                print(i)
                n = 0
      i+=1
页: [1]
查看完整版本: 课后作业006 爱因斯坦的难题 求大佬解惑