Python嵌套循环实现数字图案:如何解决两位数输出对齐问题?
数字图案对齐问题解决
问题描述
需要用嵌套for循环生成指定数字图案,行数由用户输入,要求:
- 打印的数字对应列号
- 列号小于行号时不打印,用合适空格填充空列
- 两位数需保持对齐
现有代码可生成图案,但输入两位数时数字无法对齐,需调整格式化方式实现完美对齐。现有代码如下:
# Program to print a pattern with numbers print("Program to print a pattern with numbers ") print("-" * 50) n = int(input("Please enter the number of rows ")) print("-" * 50) for i in range(n + 1): # Increase triangle hidden for j in range(i): print(" ", end=' ') # Decrease triangle to include numbers in pattern not in increment for j in range(i, n): print(j + 1, end=" ") print()
解决方案
问题核心是未统一控制每个位置的字符宽度,一位数和两位数占用字符数不同导致错位。通过固定宽度的字符串格式化即可解决:
修改后的代码:
# 数字图案打印程序 print("数字图案打印程序") print("-" * 50) n = int(input("请输入行数:")) print("-" * 50) # 自动适配最大数字的宽度,兼容一位数/两位数场景 width = len(str(n)) for i in range(n + 1): # 占位空格与数字宽度保持一致 for j in range(i): print(f"{'':{width}}", end=' ') # 数字按固定宽度格式化输出,自动补空格对齐 for j in range(i, n): print(f"{j + 1:{width}d}", end=' ') print()
关键说明
width = len(str(n)):自动获取最大数字的字符长度,确保不管输入一位数还是两位数,都能适配对应宽度- 占位空格用
f"{'':{width}}"生成,保证每个空列和数字占用相同字符宽度 - 数字用
f"{j+1:{width}d}"格式化,d表示整数类型,{width}强制固定宽度,自动在一位数前补空格实现对齐
内容的提问来源于stack exchange,提问作者Alexander
相关产品推荐
相关产品推荐

