Python 不使用Numpy打印棋盘
我正在尝试使用数组打印棋盘,而不导入任何包,如Numpy。代码应该打印回来Python 不使用Numpy打印棋盘,python,arrays,python-3.x,multidimensional-array,Python,Arrays,Python 3.x,Multidimensional Array,我正在尝试使用数组打印棋盘,而不导入任何包,如Numpy。代码应该打印回来 X 0 X 0 X 0 X 0 0 X 0 X 0 X 0 X X 0 X 0 X 0 X 0 0 X 0 X 0 X 0 X X 0 X 0 X 0 X 0 0 X 0 X 0 X 0 X X 0 X 0 X 0 X 0 0 X 0 X 0 X 0 X 这是我写的 Checkerboard = [[0]*8 for i in range(8)] for i in Checkerboard: p = 0 q =
X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X
这是我写的
Checkerboard = [[0]*8 for i in range(8)]
for i in Checkerboard:
p = 0
q = 0
for j in i:
if q % 2 == 0 and p % 2 == 0:
Checkerboard[i][j] = "X"
elif q % 2 == 1 and p % 2 == 1:
Checkerboard[i][j] = "X"
p += 1
for i in Checkerboard:
for j in Checkerboard:
print(j, end='')
print('')
但它不断地得到错误:
Checkerboard[i][j] = "X"
TypeError: list indices must be integers or slices, not list
有人能帮我解决这个问题或给我一些建议吗?(这是一个硬件分配)尝试以下代码:
Checkerboard = [["0"] * 8 for i in range(8)]
for i in range(len(Checkerboard)):
for j in range(len(Checkerboard[i])):
if i % 2 == 0 and j % 2 == 0:
Checkerboard[i][j] = "X"
elif i % 2 == 1 and j % 2 == 1:
Checkerboard[i][j] = "X"
for place in Checkerboard:
print(place, end='')
print('')
我更新了你的代码并做了一些更改。
您试图以这种方式更改董事会中a位置的问题:
Checkerboard[i][j] = "X"
但是i和j没有声明为索引。如果您使用理解,您的解决方案如下所示:
Checkerboard = [[0 if (i % 2 == 0 and j % 2 == 1) or (i % 2 == 1 and j % 2 == 0) else 'X' for j in range(8)] for i in range(8)]
Checkerboard
[['X', 0, 'X', 0, 'X', 0, 'X', 0],
[0, 'X', 0, 'X', 0, 'X', 0, 'X'],
['X', 0, 'X', 0, 'X', 0, 'X', 0],
[0, 'X', 0, 'X', 0, 'X', 0, 'X'],
['X', 0, 'X', 0, 'X', 0, 'X', 0],
[0, 'X', 0, 'X', 0, 'X', 0, 'X'],
['X', 0, 'X', 0, 'X', 0, 'X', 0],
[0, 'X', 0, 'X', 0, 'X', 0, 'X']]
或使用更精细的打印:
for i in Checkerboard:
for j in i:
print(j, end=' ')
print()
X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X
X 0 X 0 X 0 X 0
0 X 0 X 0 X 0 X
棋盘中的i是一个子列表,而不是一个可用于索引的整数。您可以迭代索引而不是对象,例如
范围内的i(len(checkboard))…
棋盘中的i在二维数组上迭代。您正在迭代一个列表列表。因此,如果i
是一个列表,那么如何执行棋盘[i][j]
<代码>i
不是整数。也许你可以为i做一些类似的,在enumerate(棋盘格)中列出子列表
,让你同时访问子列表和子列表的索引。我们希望你在帖子中包含基本诊断。至少,在错误点打印可疑值,并将其追溯到其来源。在许多情况下,执行此基本诊断将向您显示问题所在,您根本不需要堆栈溢出。您在哪里打印了导致问题的索引值?关于这些值,或者它们是如何使用的,您不了解什么?正如张贴指南所告诉你的,“让别人更容易帮助你。”使用无意义的变量名并将其压缩到低于标准的间距不会让别人想阅读你的代码。请提供预期的(MRE)。我们应该能够复制和粘贴一个连续的代码块,执行该文件,并再现您的问题以及跟踪问题点的输出。这让我们可以根据您的测试数据和期望的输出来测试我们的建议。由于语法错误,您发布的代码无法运行。非常感谢!我刚刚意识到我把打印数组和索引数组的工作搞混了。