q451177588 发表于 2021-5-31 16:47:56

新手问题求解,缩进与while

day=1
hour=1
while day <=7:
    while hour<=8:
      print("8xiaoshi")
      hour+=1
      if hour>1:
            break
    day+=1



day=1
hour=1
while day <=7:
    while hour<=8:
      print("8xiaoshi")
      hour+=1
      if hour>1:
            break
day+=1


权限不够不能上传图片,新手入门,问下学长们,后一段代码就是day+=1缩进了一次
第一段导出的7次”8xiaoshi”,我原本还能理解
结果第二段少了个缩进之后,为啥变成输出8次“8xiaoshi”搞得我一下子第一段都看不懂了,啊啊啊啊啊啊啊 求大佬讲解下,猜一猜我是哪个地方概念还是模糊的,我觉得好像是我对最前面的while day <=7这个地方,如果不成立接着是执行哪一条,并且导出是哪一条,啊啊啊啊 越想越乱,难道我学习的旅程要止步在此处了吗!!!

wp231957 发表于 2021-5-31 17:05:50

第二段代码明显是死循环啊

q451177588 发表于 2021-5-31 18:00:27

wp231957 发表于 2021-5-31 17:05
第二段代码明显是死循环啊

不是啊,我测试了之后是出现8次啊

dragon_xiao 发表于 2021-5-31 18:04:04

python 是依靠强制缩进来确定代码的作用域,

第一段代码 day+=1的作用域是在最外层的while 循环之下,当程序运行时,hour 的值每小循环执行一次,就加1,然后break,进入大循环 day+1 , 然后第二次进入小循环 while 2 <=8: 为真,执行下面的print(),hour +1,跳出,break, 执行大循环day+1,****

当day =8 时,大小while循环各执行了7次,因此打印出 7次Print

第二段代码:
当day+=1 的作用域超出外侧的while循环时,day 的值一直停留在 1上,没有变化,所以外侧的大循环while day <=7 永远为真。会进入死循环。 而里面的while hour <=8 则会循环8次。因此你会打印出 8次的print
打印完毕后,小循环就会因hour =9 不符合条件,结束while循环。然后进入大循环while day <=7 此时,day 的值还是1,因此会无限循环下去,但是不会执行任何输出结果。所以什么也不显示。

wp231957 发表于 2021-5-31 18:04:06

q451177588 发表于 2021-5-31 18:00
不是啊,我测试了之后是出现8次啊

八次是内循环执行八次,和外循环没关
页: [1]
查看完整版本: 新手问题求解,缩进与while