You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()

关键说明

  1. width = len(str(n)):自动获取最大数字的字符长度,确保不管输入一位数还是两位数,都能适配对应宽度
  2. 占位空格用f"{'':{width}}"生成,保证每个空列和数字占用相同字符宽度
  3. 数字用f"{j+1:{width}d}"格式化,d表示整数类型,{width}强制固定宽度,自动在一位数前补空格实现对齐

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 07:45:36