理解Python while循环输出:print输出行数与预期不符问题
问题解答
你观察到的"只有2段输出"是打印参数和内容拼接逻辑导致的,代码里的3处print语句全部正常执行,没有遗漏。
首先明确3处print的行为差异:
- 循环体内的
print(str(i) + " " + str(j) + " ", end=''):手动指定了end='',意味着每次打印完内容后不会自动追加换行符,所有循环轮次的输出会连续拼接在同一行,不会单独形成独立段落。 - 循环结束后的第一句
print(str(i)):没有自定义end参数,使用Python默认的end='\n'规则(打印完内容自动加换行)。它输出的内容会直接接在前面循环打印的所有内容末尾,共同组成第一整行输出。 - 最后一句
print(i + j):同样默认打印完自动加换行,单独输出计算结果,形成第二块可见的独立输出。
我们可以逐轮推演loop_mystery_exam1(80, 9)的执行过程验证:
- 初始入参i=80,j=9,满足循环条件:
计算得i = 80//9 = 8,j = (9-1)//2 = 4,打印8 4,不换行 - 当前i=8、j=4,满足循环条件:
计算得i = 8//4 = 2,j = (4-1)//2 = 1,打印2 1,不换行 - 当前i=2、j=1,满足循环条件:
计算得i = 2//1 = 2,j = (1-1)//2 = 0,打印2 0,不换行 - 此时j=0,不满足循环判定条件,退出循环:
- 执行
print(str(i)):在前面已打印的8 4 2 1 2 0后面追加打印2,然后自动换行,拼出完整第一行:8 4 2 1 2 0 2 - 执行
print(i + j):此时i=2、j=0,计算结果为2,打印2后自动换行
- 执行
三者拼接后代码的实际运行输出为:
8 4 2 1 2 0 2 2
你贴出的结果里两行中间的空行属于复制时产生的格式误差,不是代码本身的输出。你视觉上只看到2段输出,核心原因就是循环内的print关闭了自动换行,输出和下一句print的内容粘在了同一行,并非少执行了print语句。
内容的提问来源于stack exchange,提问作者Vedant
相关产品推荐
相关产品推荐

