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

无需使用format实现数字右对齐:多行输出对齐异常的排查与修复

Python数字矩阵打印对齐错乱问题:原因与修复

问题描述

编写Python程序实现以下需求:

  • 接收一个满足-6 < n < 2的整数n
  • 将n到n+41的数字以6行7列格式打印,每行包含连续7个数字(第一行n到n+6,第二行n+7到n+13,以此类推)

运行当前代码后,出现单个数字对齐错乱的问题,示例输出如下:

2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 32 33 34 35 36
37 38 39 40 41 42 43

当前代码:

n = int(input("Enter a number between -6 and 2:"))

if n > 2:
    print("Invalid input! The value of 'n' should be between -6 and 2.")
elif n <-6:
     print("Invalid input! The value of 'n' should be between -6 and 2.")
else:
    for i in range(n,n+42,7):
        for j in range(i,i + 6):
            if -1<j<10:
                print(" " + str(j), end = " ") 
            else: 
                print(j, sep = " ",end= " ")
        print((i+6))

问题原因

  1. 最后一个数字未应用对齐规则:内层循环仅处理每行前6个数字,最后一个数字通过单独的print(i+6)输出,没有添加前缀空格,导致格式和前面的数字不一致。
  2. 对齐逻辑不严谨:手动判断数字范围添加空格的方式,无法覆盖负数(比如n=-5时的负数数字),还容易因为单独处理元素出现格式漏洞。
  3. 循环范围设计冗余:将一行7个数字拆分为6个循环处理+1个单独打印,增加了出错概率。

修复方案

使用字符串格式化统一控制每个数字的显示宽度,同时调整循环范围一次性处理每行的7个数字,简化逻辑:

修正后的代码:

n = int(input("Enter a number between -6 and 2:"))

# 合并输入校验条件,简化代码
if not (-6 < n < 2):
    print("Invalid input! The value of 'n' should be between -6 and 2.")
else:
    # 外层循环控制每行起始数字,步长7
    for i in range(n, n + 42, 7):
        # 内层循环遍历当前行的7个数字
        for j in range(i, i + 7):
            # 使用格式化字符串,让每个数字占2个字符宽度,自动对齐
            print(f"{j:2d}", end=" ")
        # 每行结束后换行
        print()

修正后的输出(以n=2为例)

2  3  4  5  6  7  8
 9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 32 33 34 35 36
37 38 39 40 41 42 43

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 06:03:18