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

如何制作字符串金字塔?现有Python代码输出异常求修正

如何实现字符串金字塔的列输出?

我想要制作字符串金字塔,在列的处理上存在困惑。示例:输入行数为6,字符串为python,预期输出如下:

p
y p
t y p
h t y p
o h t y p
n o h t y p

我的代码如下:

row = int(input('Input row:'))
string = input('Input string: ')
y = 0

for i in range(row):
    for j in range(i+1):
        list_string = string[y]
        print(list_string, end='')
        y += 1
        if i == y - 1 :
            break
    print()

但运行后输出为:

p
y
t
h
o
n

问题原因

你的代码中用了全局变量y持续累加字符索引,导致每一行仅能取到字符串的下一个字符就触发break退出内层循环,完全偏离了“每一行从当前行对应索引倒序取前N个字符”的逻辑。

修正方案

不需要全局索引变量,直接根据当前行号i,从字符串的i位置开始倒序取i+1个字符,用空格拼接后打印即可:

方案1(列表推导式+join,简洁无末尾空格)

row = int(input('Input row:'))
string = input('Input string: ')

for i in range(row):
    # 从i位置倒序取到0,生成字符列表
    chars = [string[i - j] for j in range(i + 1)]
    # 用空格连接成字符串后打印
    print(' '.join(chars))

方案2(循环拼接,手动控制空格)

row = int(input('Input row:'))
string = input('Input string: ')

for i in range(row):
    # 初始化当前行的第一个字符
    line = string[i]
    # 依次拼接后续字符(带前置空格)
    for j in range(1, i + 1):
        line += ' ' + string[i - j]
    print(line)

运行上述代码后,就能得到你预期的字符串金字塔效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:15:39