Python代码输出异常图案排查:目标与实际输出不符
图案输出异常原因及修正
目标图案说明
目标是实现每行数字序列从0开始递增,同时每行缩进依次增加2个空格,数字序列长度逐行减1的图案:
0123456789 012345678 01234567 0123456 012345 01234 0123 012 01 0
你的代码
limit = 10 for i in range(1, 12): for j in range(i): print(" "*j, end="") if limit >= 0: for j in range(0, limit): print(j, end="") limit -= 1 print()
异常原因分析
- 缩进逻辑错误:你用嵌套循环
for j in range(i): print(" "*j, end="")生成缩进,这会导致每行的空格数是累加的:- i=1时,j只取0,输出0个空格;
- i=2时,j取0和1,先输出0个空格再输出1个空格,总共1个空格;
- i=3时,j取0、1、2,输出0+1+2=3个空格;
这种方式会让缩进的增量越来越大,完全偏离目标中每行增加2个空格的要求,直接导致图案错乱。
- 数字输出部分逻辑是对的,但因为缩进错误,整体排版完全混乱。
修正后的代码
调整缩进生成逻辑,直接用固定的空格数实现均匀缩进:
limit = 10 for i in range(1, 12): # 每行输出 (i-1)*2 个空格,实现逐行增加2个空格的缩进 print(" " * ((i-1)*2), end="") if limit >= 0: for j in range(0, limit): print(j, end="") limit -= 1 print()
内容的提问来源于stack exchange,提问作者Sagnik Majumder
相关产品推荐
相关产品推荐

