Skip to main content
 首页 » 编程设计

python之我如何摆脱这个 TypeError,为什么它会发生,因为我只是在列表中重新分配一个值

2025年05月04日14mayingbao

代码:

http://pastie.org/1961455

引用:

Traceback (most recent call last): 
  File "C:\Users\COMPAQ\Desktop\NoughtsCrosses.py", line 149, in <module> 
    main () 
  File "C:\Users\COMPAQ\Desktop\NoughtsCrosses.py", line 144, in main 
    move = computer_move(computer, board, human) 
  File "C:\Users\COMPAQ\Desktop\NoughtsCrosses.py", line 117, in computer_move 
    board[i] = computer 
TypeError: 'str' object does not support item assignment 

正如您在我的井字游戏程序中所见,computer_move 函数中的 board[i] = computer 行是导致错误的(如果我没看错的话)。但如果我知道这一点,列表中允许项目分配,并且我为我的函数创建了“board”的本地副本,以便我可以在函数内重新分配值和诸如此类的东西......

任何输入都将不胜感激。这是我的第一段正式代码,所以如果有问题的函数看起来太乱了

请您参考如下方法:

问题出在这里:

def computer_move (computer, board, human): 
    best = (4,0,8,2,6,1,3,5,7) 
    board = board [:] 
    for i in legal_moves(board): 
        board[i] = computer 
        if winner(board) == computer: 
            return i 
        board = EMPTY 

在函数的末尾,您将 EMPTY 分配给 board,但是 EMPTY 是一个空字符串,如第 4 行所定义的。我假设您的意思一定是 board[i] = EMPTY。