定义字符串打印模式时遇报错:TypeError: string indices must be integers
问题原因与解决方案
错误根源
你代码里的cur_char[r,c]是直接触发错误的原因:cur_char是普通字符串,Python中字符串仅支持单个整数索引(比如cur_char[0]取第一个字符),不允许用逗号分隔的二维索引语法。
修正方案(基于7行6列点阵打印需求)
看起来你想实现类似LED点阵的字符打印效果,以下是可行的实现方式:
1. 先定义字符点阵映射
预先为需要打印的字符定义好7行6列的点阵图案:
# 示例:A、B、C的7x6点阵定义,每个元素对应一行的6个字符 CHAR_PATTERNS = { 'A': [ ' ** ', ' * * ', '* *', '* *', '******', '* *', '* *' ], 'B': [ '***** ', '* *', '* *', '***** ', '* *', '* *', '***** ' ], 'C': [ ' **** ', '* *', '* ', '* ', '* ', '* *', ' **** ' ] }
2. 修改打印函数
遍历每一行,对输入字符串中的每个字符,直接取出对应行的点阵字符串打印:
def print_string(ABC): for row in range(7): for char in ABC: # 取出当前字符的第row行点阵,若字符未定义则输出空白行 print(CHAR_PATTERNS.get(char, ' '), end='') print() # 调用示例 print_string("ABC")
另一种思路:传入二维字符数组
如果你的输入是每个字符对应一个7x6的二维列表(而非普通字符串),可以这样修改函数:
def print_string(char_matrices): for row in range(7): for matrix in char_matrices: # 拼接当前行的所有字符并打印 print(''.join(matrix[row]), end='') print() # 调用示例(a_matrix是7行6列的二维列表) a_matrix = [ [' ',' ','*','*',' ',' '], [' ','*',' ',' ','*',' '], ['*',' ',' ',' ',' ','*'], ['*',' ',' ',' ',' ','*'], ['*','*','*','*','*','*'], ['*',' ',' ',' ',' ','*'], ['*',' ',' ',' ',' ','*'] ] print_string([a_matrix])
内容的提问来源于stack exchange,提问作者ARW
相关产品推荐
相关产品推荐

