turns = [4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4]
turns.append([1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4])
turns.append([4, 6, 2, 8, 1, 9, 6, 5, 3, 7, 6, 8, 2, 4])
turns.append([0, 0, 26, 24, 3, 7, 5, 4, 25, 25, 21, 21, 21, 21])
turns.append([0, 0, 0, 0, 7, 3, 8, 2, 0, 0, 29, 29, 29, 29])
turns.append([0, 0, 0, 0, 26, 24, 0, 0, 0, 0, 0, 0, 0, 0])
arrayValue = turns[j][i]
if arrayValue == turnCurrently:
Error Message:
Traceback (most recent call last):
File "D:/a45d32f947055690c690d94f88/TicTacToe", line 183, in <module>
arrayValue = turns[j][i]
TypeError: 'int' object is not subscriptable
我的问题基本上是,我想测试turns[j][i]
是否等于turnCurrently
,但我一直遇到这个可订阅的问题,我无法在任何地方找到答案这是一个非常重要的问题。提前致谢,
理查德
答案 0 :(得分:6)
尝试使用此方法构建转弯的二维数组(“矩阵”):
turns = [[4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4]]
turns.append([1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4])
turns.append([4, 6, 2, 8, 1, 9, 6, 5, 3, 7, 6, 8, 2, 4])
turns.append([0, 0, 26, 24, 3, 7, 5, 4, 25, 25, 21, 21, 21, 21])
turns.append([0, 0, 0, 0, 7, 3, 8, 2, 0, 0, 29, 29, 29, 29])
turns.append([0, 0, 0, 0, 26, 24, 0, 0, 0, 0, 0, 0, 0, 0])
或者只是这个:
turns = [[4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4],
[1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4],
[4, 6, 2, 8, 1, 9, 6, 5, 3, 7, 6, 8, 2, 4],
[0, 0, 26, 24, 3, 7, 5, 4, 25, 25, 21, 21, 21, 21],
[0, 0, 0, 0, 7, 3, 8, 2, 0, 0, 29, 29, 29, 29],
[0, 0, 0, 0, 26, 24, 0, 0, 0, 0, 0, 0, 0, 0]]
如您所见,矩阵只不过是一个列表列表。您没有首先构建矩阵 - 第一行 也是一个列表。
答案 1 :(得分:2)
你的阵列有一个奇怪的布局。前14个元素是整数,然后是几个其他数组。
所以你基本上拥有的是:
[4, 6, 2, ..., 2, 4, [1, 1, 2, ...], [4, 6, ...], ...]
您可以通过将第一个作业更改为:
来解决此问题turns = [[4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4]]
答案 2 :(得分:2)
打印出变量的内容通常会有很大帮助,看看它发生了什么:
>>> turns
[4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4, [1, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4], [0, 0, 26, 24, 3, 7, 5, 4, 25, 25, 21, 21, 21, 21], [0, 0, 0, 0, 7, 3, 8, 2, 0, 0, 29, 29, 29, 29], [0, 0, 0, 0, 26, 24, 0, 0, 0, 0, 0, 0, 0, 0]]
如您所见,该列表的前几个元素是简单整数,但不是整数列表。因此,当j
很小时,它会选择int
并尝试在其上应用[i]
- 这会失败。
这种情况下的解决方案是将第一个元素放入一个额外的列表中:
turns = [[4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4]]
turns.append( … )
另一种方法是将列表初始化为空列表,并附加第一个子列表:
turns = []
turns.append([4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4])
turns.append( … )
答案 3 :(得分:1)
将turns = [4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4]
更改为
turns = [[4, 6, 2, 8, 1, 9, 5, 5, 3, 7, 6, 8, 2, 4]]