如何用星号将输入字母转为大型字符?纯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
相关产品推荐
相关产品推荐

