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

如何用星号将输入字母转为大型字符?纯Python实现求助

问题分析与解决方案

你的原代码存在几个明显问题:

  • input(...).split()会按空格拆分输入,输入"ABC"会得到["ABC"],无法逐个处理单个字母,应该直接遍历输入字符串。
  • range(text+1)逻辑错误,text是列表不能和整数相加,我们需要按大型字符的固定行数(5行)循环,而非输入字符数量。
  • A的元素混合了整数和列表,无法直接用"*" * A[i]处理,需统一用0/1列表表示每行的空格和星号。

以下是纯Python的完整实现:

# 定义字符对应的5行图案,0代表空格,1代表星号
char_patterns = {
    'A': [
        [1,1,1],
        [1,0,1],
        [1,1,1],
        [1,0,1],
        [1,0,1]
    ],
    'B': [
        [1,1],
        [1,0],
        [1,1],
        [1,0],
        [1,1]
    ],
    'C': [
        [1,1,1],
        [1,0,0],
        [1,0,0],
        [1,0,0],
        [1,1,1]
    ]
}

# 获取输入并转为大写(统一处理大小写)
input_text = input("输入文本: ").upper()

# 遍历大型字符的每一行(共5行)
for row_idx in range(5):
    current_line = []
    # 逐个处理输入的每个字符
    for char in input_text:
        # 获取当前字符的对应行图案
        pattern_row = char_patterns.get(char, [])
        if pattern_row:
            # 将0/1转为空格/星号,拼接成单字符行
            char_segment = ''.join(['*' if num == 1 else ' ' for num in pattern_row])
            current_line.append(char_segment)
        else:
            # 未定义的字符用3个空格填充(匹配A的宽度)
            current_line.append('   ')
    # 拼接所有字符的当前行,用空格分隔
    print(' '.join(current_line))

测试输入"ABC",输出结果与示例一致:

*** **  ***
* * *   *
*** **  *
* * *   *
* * **  ***

核心逻辑说明:

  • 每个字符的图案按行定义,确保横向拼接时对齐。
  • 循环5次对应大型字符的固定高度,每次将输入中所有字符的当前行图案转换为字符串后拼接打印。
  • 未定义的字符用空格填充,避免输出混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 19:05:31