【问题标题】:Tic-Tac-Toe Game Error - "IndexError: list index out of range"井字游戏错误 - “IndexError:列表索引超出范围”
【发布时间】:2020-06-18 19:47:36
【问题描述】:

我还是个初学者。目前,我正在使用 Python 3 制作井字游戏。我的一个应该检查空间是否已满的函数不断给我错误消息:

"IndexError: 列表索引超出范围",

我不知道如何解决它。显然,是 if 语句给我带来了麻烦,但我没有看到问题。我已经在互联网上搜寻解决方案,但还没有找到解决方案。如果有人能帮我解决这个问题,我们将不胜感激。

def space_check(board, position):

    space_full = False

    if board[position] == 'X' or board[position] == 'O':
        space_full = True
        print("This space is already marked.")
    else:
        print("This space is available.")

【问题讨论】:

  • 这意味着您用作板阵列索引的位置正在尝试访问不存在的值。
  • 这不是一个愚蠢的问题。对于您提供的信息,我们无能为力。阅读有关如何提供minimal reproducible example 的信息。这实际上取决于board 是什么以及position 是什么...您应该通过添加一些打印(甚至更好地使用调试器)来调试您的程序并找到有问题的值

标签: python


【解决方案1】:

您的问题是position 是一个过高的数字,而board 列表在该索引处没有值。

尝试在函数中打印位置,然后将其与板的大小进行比较,以查看错误所在。

记住列表是零索引的,所以如果它是3x3,那么最高索引将是2,而不是3

【讨论】:

    【解决方案2】:

    想象一下,你有一个购物清单,里面有“葡萄、胡萝卜、面包”,你问清单中的第四件事是什么,这不合理,对吧?这就是这个错误。您可能需要记住,列表的第一部分是索引 0,但长度显示了您认为的长度,如下所示:

    x = ['a', 'b']
    

    a 是 x[0],b 是 x[1]。然而:

    len(x) = 2
    

    要解决这个问题,你需要做的就是改变

    board[position]
    

    到:

    board[position-1]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-18
      • 2017-07-02
      • 2018-04-22
      • 2020-09-04
      • 1970-01-01
      相关资源
      最近更新 更多