如水如风 发表于 2021-2-21 21:30:13

第006讲:Python之常用操作符动动手2题疑问

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                                                                                 #为什么i+=1放在x的正下方就没有数字生成生成,放在else下面就能有结果生成

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

昨非 发表于 2021-2-21 21:33:36

本帖最后由 昨非 于 2021-2-21 21:39 编辑

你是在问缩进的问题吗
i+=1这一句必须保证:无论if-else是否满足条件,每层while循环后必定执行
如果你放在else分支语句的内部,则当else不满足条件时,i就不会变
顺带的,x就不会变,判断结果就不会变,进而陷入死循环

Daniel_Zhang 发表于 2021-2-21 21:33:37

你说的时这个吧?

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# 为什么i+=1放在x的正下方就没有数字生成生成,放在else下面就能有结果生成

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

因为当你满足 if 的条件时, i并不会 + 1

所以会一直循环,一直满足 if 的条件,进入了死循环

放在 else 外面则是,不论是满足 if 还是 else 的条件,i 都会 +1

Daniel_Zhang 发表于 2021-2-21 21:35:33

昨非 发表于 2021-2-21 21:33
你是在问缩进的问题吗

应该是 i+=1 那个的缩进问题吧

他的代码跑了一下,好家伙,直接死循环了{:10_277:}

如水如风 发表于 2021-2-22 17:31:27

Daniel_Zhang 发表于 2021-2-21 21:33
你说的时这个吧?




谢谢{:5_109:}

如水如风 发表于 2021-2-22 17:32:02

Daniel_Zhang 发表于 2021-2-21 21:35
应该是 i+=1 那个的缩进问题吧

他的代码跑了一下,好家伙,直接死循环了

谢谢{:10_279:}

Daniel_Zhang 发表于 2021-2-22 17:43:58

昨非 发表于 2021-2-21 21:33
你是在问缩进的问题吗
i+=1这一句必须保证:无论if-else是否满足条件,每层while循环后必定执行
如果你放 ...

好家伙,先写第一句站了个坑,比我早发帖1秒{:10_313:}

然后过了一会儿领悟到了题主的意思

修改答案写剩下的内容,拿到了最佳{:10_250:}

好想法,我咋就没想到呢{:10_285:}

我还在那里傻乎乎的敲字{:10_263:}

没事,能帮到题主就行{:10_288:}

昨非 发表于 2021-2-22 17:46:41

Daniel_Zhang 发表于 2021-2-22 17:43
好家伙,先写第一句站了个坑,比我早发帖1秒

然后过了一会儿领悟到了题主的意思


不是,不至于啊兄弟
一开始我也不确定具体是啥问题
不是跟你讨论了下嘛{:10_277:}

Daniel_Zhang 发表于 2021-2-22 17:47:47

昨非 发表于 2021-2-22 17:46
不是,不至于啊兄弟
一开始我也不确定具体是啥问题
不是跟你讨论了下嘛

没事没事

我就是吐槽一下

快点去我帖子说说那个淘专辑的事儿{:10_288:}
页: [1]
查看完整版本: 第006讲:Python之常用操作符动动手2题疑问