TypeError:字符串索引必须是整数?

2024-05-23 14:22:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图最终打印“board”,但控制台无法通过这部分代码:

board1=(" ")
board2=(" ")
board3=(" ")
board4=(" ")
board5=(" ")
board6=(" ")
board7=(" ")
board8=(" ")
board9=(" ")



board= ((board1+" | "+board2+" | "+board3)
["---------"]
(board4+" | "+board5+" | "+board6)
["---------"]
(board7+" | "+board8+" | "+board9)) 

它只返回这个错误代码。有人有什么想法吗?你知道吗

Traceback (most recent call last):
  File "C:\Users\Jaymeson\Desktop\Rock Paper Scissors CPU.py", line 36, in     <module>
    ["---------"]
TypeError: string indices must be integers
>>> 

我希望输出为:

  |   |  
---------
  |   |  
---------
  |   |  

Tags: 代码boardmosttracebackrecent错误代码board2board1
1条回答
网友
1楼 · 发布于 2024-05-23 14:22:58

(board1+" | "+board2+" | "+board3)创建一个字符串。然后要求Python使用string[...]索引该字符串。字符串只能采用整数(单个字符的位置)。你给了它字符串" -"。你知道吗

如果你想在细胞之间划一条线,不要在细胞周围使用[...]。只需连接(并包含换行符):

board= ((board1+" | "+board2+" | "+board3) + 
        "\n    -\n" +
        (board4+" | "+board5+" | "+board6) +
        "\n    -\n" +
        (board7+" | "+board8+" | "+board9))

我会使用嵌套列表,稍后再打印:

board = [[' ' for _ in range(3)] for _ in range(3)]

def print_board(board):
    print(*(' | '.join(row) for row in board),
          sep='\n + -+ \n')

现在,嵌套列表中有一个3 x 3的矩阵,可以根据需要更改单元格:

>>> def print_board(board):
...     print(*(' | '.join(row) for row in board),
...           sep='\n + -+ \n')
...
>>> board = [[' ' for _ in range(3)] for _ in range(3)]
>>> print_board(board)
  |   |
 + -+ 
  |   |
 + -+ 
  |   |
>>> board[0][0] = 'O'
>>> board[1][1] = 'X'
>>> print_board(board)
O |   |
 + -+ 
  | X |
 + -+ 
  |   |

相关问题 更多 >