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

Python星号字母打印优化:实现单词字母并排输出及输入验证

解决星号字母并排打印的方案

核心思路

原来的字母打印函数是直接逐行输出单个字母,要实现并排显示,需要:

  1. 重构所有字母函数,让它们返回每行的字符串列表(而非直接打印),确保每个字母的行数统一(示例中统一为5行)。
  2. 对输入的有效单词,收集每个字符对应的行列表。
  3. 按行索引遍历,把每个字母的对应行字符串拼接后逐行打印。

代码实现示例

1. 重构字母函数(返回行列表)

def get_T():
    return [
        "*****",
        "  *  ",
        "  *  ",
        "  *  ",
        "  *  "
    ]

def get_O():
    return [
        " *** ",
        "*   *",
        "*   *",
        "*   *",
        " *** "
    ]

def get_Y():
    return [
        "*   *",
        " * * ",
        "  *  ",
        "  *  ",
        "  *  "
    ]

def get_N():
    return [
        "*   *",
        "**  *",
        "* * *",
        "*  **",
        "*   *"
    ]

def get_B():
    return [
        "**** ",
        "*   *",
        "**** ",
        "*   *",
        "**** "
    ]

def get_A():
    return [
        " *** ",
        "*   *",
        "*****",
        "*   *",
        "*   *"
    ]

# 建立字符到对应函数的映射
char_map = {
    'T': get_T,
    'O': get_O,
    'Y': get_Y,
    'N': get_N,
    'B': get_B,
    'A': get_A
}

2. 输入处理与并排打印函数

def process_input():
    # 保留原有输入处理逻辑:收集有效单词、去重
    valid_words = set()
    while True:
        user_input = input("请输入单词(输入'q'退出):").strip().upper()
        if user_input == 'Q':
            break
        # 过滤仅保留支持的字符
        filtered_chars = [c for c in user_input if c in char_map]
        if filtered_chars:
            valid_word = ''.join(filtered_chars)
            valid_words.add(valid_word)
    return list(valid_words)

def print_word_side_by_side(word):
    # 获取单词中每个字符的行列表
    char_lines = [char_map[c]() for c in word]
    # 按行拼接所有字符的对应行并打印
    for row in zip(*char_lines):
        print(' '.join(row))

# 主执行逻辑
if __name__ == "__main__":
    valid_words = process_input()
    print("\n处理后的结果:")
    for word in valid_words:
        print(f"\n单词 {word} 的打印效果:")
        print_word_side_by_side(word)

关键说明

  • zip(*char_lines):将每个字母的行列表“转置”,每次取到所有字母的第n行,实现横向拼接的基础。
  • ' '.join(row):在字母行之间添加空格分隔,避免字符挤在一起影响可读性。
  • 需确保所有字母函数返回的行列表长度一致,否则zip会自动截断到最短的行数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:43:27