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

标签 python debugging typeerror tic-tac-toe

代码:

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

关于python - 我如何摆脱这个 TypeError,为什么它会发生,因为我只是在列表中重新分配一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6099215/

相关文章:

python - sqlalchemy 转储元数据到文件

python - 通过 psycopg2 将 bytea 字段导入 PostgreSQL 数据库

python - 如何在 Ipython 中重新加载线分析器源

c++ - 如何在默认情况下在 eclipse-cdt (Eclipse for C++) 中启用指令步进?

python - TypeError:强制转换为 Unicode:需要字符串或缓冲区

python - Tensorboard 类型错误 : __init__() got an unexpected keyword argument 'serialized_options'

javascript - react 功能组件中的 typescript Prop 歧视

python - python中两个具有相同值的不同字符串对象

python - 如何使用 Pandas 的时间戳按小时对数据帧进行分组

c++ - 如何查看预处理后文件的外观?