You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python嵌套循环缩进问题:print()语句执行时机疑问

关于Python嵌套循环中print执行顺序的疑问解答

嘿,我完全懂你的困惑!咱们先拿一个典型的示例代码来说明吧,我猜你写的代码大概是这样的:

for i in range(3):
    print(i, end=' ')
    for j in range(2):
        print(j, end=' ')
    print()

你之所以觉得print()应该在所有嵌套循环完成后才运行,核心是没搞清楚Python的缩进规则——这可是Python划分代码块的核心依据!

咱们拆解一下代码的执行逻辑:

  • 外层是for i循环,每一轮循环都会依次执行它缩进层级下的所有代码:
    1. 先执行print(i, end=' '),打印当前的i值,并且通过end=' '设置不换行;
    2. 接着执行嵌套的for j循环,把j的所有值依次打印出来,同样保持不换行;
    3. 最后执行和print(i...)同一缩进级别的print()——这个print()没有参数,默认会输出一个换行符,用来结束当前这一行的输出。

换句话说,print()确实不在嵌套的j循环里,但它是外层i循环的一部分,所以每轮i循环跑完j循环后,就会立刻执行这个换行的print(),而不是等所有i循环都结束。

如果你的预期是等所有嵌套循环都跑完再执行print(),那你得把print()的缩进去掉,让它和外层for i循环同级,比如:

for i in range(3):
    print(i, end=' ')
    for j in range(2):
        print(j, end=' ')
print()  # 现在这个print会在所有循环结束后才执行

这样修改后,所有的i和j值都会打印在同一行,最后才会换行。

内容的提问来源于stack exchange,提问作者Alan

火山引擎 最新活动