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

如何修改Python星号放大字符程序实现横向并排输出?

解决星号放大单词横向并排输出的问题

问题根源

你的现有程序应该是逐个字符打印其所有放大行,导致每个字符的图案垂直堆叠。要实现横向并排,核心是按行拼接每个字符的对应行,而不是逐个字符打印完整图案。

修改思路

  1. 先收集输入单词中每个字符的放大行列表
  2. 遍历每一行索引,将所有字符的对应行拼接(可加空格分隔)
  3. 逐行打印拼接后的结果

修改后的完整代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:46:56