如何制作字符串金字塔?现有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
相关产品推荐
相关产品推荐

