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

定义字符串打印模式时遇报错: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:45:34