如何修改Python星号放大字符程序实现横向并排输出?
解决星号放大单词横向并排输出的问题
问题根源
你的现有程序应该是逐个字符打印其所有放大行,导致每个字符的图案垂直堆叠。要实现横向并排,核心是按行拼接每个字符的对应行,而不是逐个字符打印完整图案。
修改思路
- 先收集输入单词中每个字符的放大行列表
- 遍历每一行索引,将所有字符的对应行拼接(可加空格分隔)
- 逐行打印拼接后的结果
修改后的完整代码
def draw_char(c): # 定义字符的星号放大图案,可根据需求扩展更多字符 char_patterns = { 'A': [ ' *** ', ' * * ', '*****', '* *', '* *' ], 'B': [ '**** ', '* *', '**** ', '* *', '**** ' ], 'C': [ ' *** ', ' * * ', '* *', ' * * ', ' *** ' ], ' ': [ ' ', ' ', ' ', ' ', ' ' ] } # 统一字符大小写,不存在的字符返回空行(保证行数一致) return char_patterns.get(c.upper(), [' '] * 5) # 获取用户输入 user_input = input("请输入要放大的单词:") # 收集每个字符的放大行数据 char_line_groups = [draw_char(char) for char in user_input] # 确保有输入时才执行后续操作 if char_line_groups: # 所有字符的放大行数一致,取第一组的行数 total_rows = len(char_line_groups[0]) # 逐行拼接并打印 for row_idx in range(total_rows): # 把每个字符的第row_idx行拼接,用空格分隔避免图案粘连 combined_row = ' '.join([group[row_idx] for group in char_line_groups]) print(combined_row)
效果演示
输入"ABC"时,输出会是:
*** **** *** * * * * * * ***** **** * * * * * * * * * * **** ***
关键说明
- 确保所有字符的放大图案行数一致,否则拼接时会报错(代码中已通过默认空行处理)
- 使用
' '.join()拼接每行的字符图案,可根据需求调整分隔空格的数量 - 可自由扩展
char_patterns字典,添加更多字符的星号图案
内容的提问来源于stack exchange,提问作者Yash Kandra
相关产品推荐
相关产品推荐

