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

Python打印指定对称数字图案输出不符合预期问题求助

问题描述

需要打印如下对称数字图案,要求相邻数字间仅一个空格,每行末尾无空格:

1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2 1

以下是原实现代码,但运行后每行末尾存在空格,不符合要求:

for i in range(1, 6):
    # Print numbers in increasing order
    for j in range(1, i + 1):
        print(j, end=' ')

    # Print numbers in decreasing order
    for j in range(i - 1, 0, -1):
        print(j, end=' ')

    # Move to the next line
    print()

运行输出(每行末尾带空格):

1 
1 2 1 
1 2 3 2 1 
1 2 3 4 3 2 1 
1 2 3 4 5 4 3 2 1 

修正方案

方法1:构造完整数字列表后用空格连接

先生成每行的完整数字序列,再通过join方法直接拼接成符合要求的字符串,一次性打印:

for i in range(1, 6):
    # 拼接递增和递减部分的数字列表
    num_list = list(range(1, i+1)) + list(range(i-1, 0, -1))
    # 将数字转为字符串后用空格连接
    print(' '.join(map(str, num_list)))

方法2:字符串拼接后统一输出

分别生成递增和递减部分的字符串,再根据情况拼接,避免多余空格:

for i in range(1, 6):
    # 生成递增序列的字符串
    increasing_str = ' '.join(map(str, range(1, i+1)))
    # 生成递减序列的字符串
    decreasing_str = ' '.join(map(str, range(i-1, 0, -1)))
    # 仅当递减序列非空时,在两部分之间加空格
    full_line = f"{increasing_str} {decreasing_str}" if decreasing_str else increasing_str
    print(full_line)

方法3:控制print的end参数

通过判断当前元素是否为序列末尾,决定是否添加空格,精准控制输出:

for i in range(1, 6):
    # 打印递增部分
    for j in range(1, i + 1):
        print(j, end=' ' if j != i else '')
    # 打印递减部分
    for j in range(i - 1, 0, -1):
        print(f' {j}', end='')
    # 换行
    print()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:13:07