【发布时间】:2020-10-15 11:35:59
【问题描述】:
我有一个名为“board”的嵌套列表,它应该像一个 3x3 网格(这是一个井字游戏程序,我是一个完整的初学者):
board = [[' ', ' ', ' '],
[' ', ' ', ' '],
[' ', ' ', ' ']]
要访问/更改此嵌套列表中的单个值,我相信我会使用两个索引,就像这样,在这种情况下更改第一个值:
board[0][0] = 'X'
我不想输入两个坐标来进行移动,所以我想为数字 1-9 分配一个特定的坐标或棋盘上的位置,所以只需按一下键。我试着用字典来做这个:
dicBoard = {7: [0][0], 8: [0][1], 9: [0][2],
4: [1][0], 5: [1][1], 6: [1][2],
1: [2][0], 2: [2][1], 3: [2][2]}
但这不起作用,调用print(dicBoard[7]) 不会像我想要的那样输出 [0][0],而只是输出 0。因此,如果我尝试使用 board[dicBoard[7] = 'X' 来定位特定值例如,计算机将其读取为 board[0] 而不是 board[0][0],这意味着它针对列表的整个第一行。
我还尝试将字典重写为dicBoard = {7: board[0][0]...} 等等,但这不起作用,因为我无法通过字典中的单个输入更改原始列表“板”中的任何值。 dicBoard[7] = 'X' 不会将 board[0][0] 更改为“X”,它只会更改字典本身中的值。
我不能只使用字典并摆脱列表的原因是因为我连续检查三个 X 或 O 的方式需要一个带有坐标的“二维”列表,而我不需要我认为我可以将坐标分配给字典。显然有不同的方法可以使用字典来检查是否获胜,但我试图在不硬编码井字游戏的每个组合的情况下做到这一点。
我自己可能过于复杂了,但这并不是什么真正严重的事情,只是为了让我学习,我宁愿接受挑战,理解如何做这本字典 + 列表的东西。
:) 谢谢
【问题讨论】:
-
你为什么要使用字典像
board[x][y]这样的列表访问有什么问题? -
@komatiraju032 因为我只想有一个输入,而不是输入 x 和 y,我想输入 z 并且已经有 z = [x][y]。我不知道字典是否是最好的方法。
标签: python list dictionary indexing