Christmas998 发表于 2021-4-20 11:04:18

python第九课课后题求助

有大佬可以解释一下吗?新手表示看不懂哎{:9_221:}

目测以下程序会打印什么?
while True:
    while True:
      break
      print(1)
    print(2)
    break
print(3)


会打印

2
3

柿子饼同学 发表于 2021-4-20 11:19:11

本帖最后由 柿子饼同学 于 2021-4-20 11:26 编辑

while True:            #1层循环         
    while True:          #2层循环
      break            #跳出当前循环,循环中后面的东西不会执行
      print(1)         #上面有break,所以她不会执行
    print(2)             #
    break                #
print(3)               #[循环外]
注意,缩进会表示代码所属层级{:9_237:}
      

五岁能抬头 发表于 2021-4-20 14:07:22

第一个break属于第二层循环,跳出本轮循环(第二层循环),所以跳过了同为第二层循环内的print(1); 然后继续执行打印第一层循环内的print(2), 再继续执行到第二个break,属于第一层循环,跳出本轮循环(第一层循环),继续执行第一层循环外的print(3)

shemt 发表于 2021-4-20 16:03:55

break和print(1)的缩进一致,表示他们是同一层的。
先进行了break,跳出了循环,所以就不执行print(1)了。
如果print(1)在break前面,那1也会打印出来。

Christmas998 发表于 2021-4-20 18:33:53

感谢大家,我明白啦~

帅气小哥 发表于 2021-4-20 18:40:35

程序一般都是按照从上往下的顺序跑的

1.while True:      条件为true时 开始循环
2.   while True:   到这一行依然是条件为true的循环
3.      break          继续到break break的意思是跳出此循环 到下一层
4.      print(1)      因为有个break 1 不会打印因为print(1)是在2.while true 的小循环中
5.    print(2)            跳出小循环后就到了这一层 打印2
6.   break                  又来了个break 跳出大循环
7.print(3)                   到了这一层打印3

Christmas998 发表于 2021-4-20 19:07:09

柿子饼同学 发表于 2021-4-20 11:19
注意,缩进会表示代码所属层级

可以再问一下
elif '*' in passwd:
      print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ')

', count, '引号后先写一个逗号这是就规定这样写的吗?什么时候不写逗号什么时候要写呢?

柿子饼同学 发表于 2021-4-20 19:12:42

Christmas998 发表于 2021-4-20 19:07
可以再问一下
elif '*' in passwd:
      print('密码中不能含有"*"号!您还有', count, '次机会!',...

建议把基础学扎实在弄这些,逗号就是分隔的作用,
例:>>> print('520')#不要吧,就一个参数
520
>>> print('520', '1314')#大于一个参数是就要了呀.不然她看不懂
520 1314
>>> print('520' '1314')   #其实不写也没事(但建议写,其他函数里就不是这么一回事了)
5201314
有多个参数就写,没错的哈{:10_256:}

Christmas998 发表于 2021-4-20 19:16:47

柿子饼同学 发表于 2021-4-20 19:12
建议把基础学扎实在弄这些,逗号就是分隔的作用,
例:
有多个参数就写,没错的哈

您举得这个例子我能看懂,但是题目中的那个',count,'难道不是只有count一个参数吗?为什么count前后有逗号呢?逗号不应该在两个参数中间吗?{:9_241:}
页: [1]
查看完整版本: python第九课课后题求助