我已经制作了一个打印10x10 O网格的代码。我想让所有的方面都显示“X”,所以我使用了一些if语句。前两个工作正常,但第三个工作使网格中的所有内容都为“X”,我不知道为什么。
size = 10
def main():
setupBoard(size)
printBoard()
def setupBoard(size):
global board
board = [[0] * size for _ in range(size)]
for row in range(len(board)):
for col in range(len(board)):
if board[row][col] == board[0][col]: #top
board[row][col] = "X"
if board[row][col] == board[row][0]: #left
board[row][col] = "X"
if board[row][col] == board[size-1][size-1]: #right
board[row][col] = "X"
else:
board[row][col] = "O"
def printBoard():
for row in range(len(board)):
print("")
for col in range(len(board)):
print(board[row][col], end = " ")
main()
输出:
O O O O O O O O O
O X X X X X X X X X
O X X X X X X X X X
O X X X X X X X X X
O X X X X X X X X X
O X X X X X X X X X
O X X X X X X X X X
O X X X X X X X X X
O X X X X X X X X X
O X X X X X X X X X
当我想要输出时:
X X X X X X X X X X X
X O O O O O O O O X
X O O O O O O O O X
X O O O O O O O O X
X O O O O O O O O X
X O O O O O O O O X
X O O O O O O O O X
X O O O O O O O O X
X O O O O O O O O X
X X X X X X X X X X X
我不知道出了什么问题,而且我一直在愚弄一段时间试图弄清楚什么是错的。帮助将不胜感激。
答案 0 :(得分:3)
你的问题是这些测试:
if board[row][col] == board[0][col]: #top
这实际上并未测试您当前的row, col
是否位于第一行。它测试的是,当前row, col
(0
)中的任何值都与该列顶部的任何值相同(X
或O
。
你只想这样做:
if (row, col) == (0, col):
或者更简单:
if row == 0:
接下来的问题是你已经尝试将底部和右部放在一起进行单一测试。但这意味着您只需要在右下角放置X
,而不是在每个底部和每个右侧插槽中放置if
。您需要两个if
语句或or
语句,其中包含if
。
最后,您有一堆单独的else
语句。这意味着O
会附加到最后一个,而不是所有这些。换句话说,不在右侧的所有内容,您都会设置为X
,这将覆盖您为上边缘和左边缘设置的elif
。要解决此问题,您需要使用if
将if row == 0: # top
board[row][col] = "X"
elif col == 0: # left
board[row][col] = "X"
elif row == size-1: # bottom
board[row][col] = "X"
elif col == size-1: # right
board[row][col] = "X"
else:
board[row][col] = "O"
链接在一起。
全部放在一起:
or
或者你可以if row == 0 or col == 0 or row == size-1 or col == size-1:
board[row][col] = "X"
else:
board[row][col] = "O"
将所有这些条件放在一起,因为你对每种情况做同样的事情:
{{1}}
答案 1 :(得分:0)
这不应该是答案,因为它没有专门回答你的问题 - 但只是给你另一个视角,你可以通过这样做而不必使用如果声明,并摆脱两个级别的嵌套。通常在Python中,有一种比通过/ nexting每个项目更好的方法。
size = 10
def main():
board = setup_board(size)
print_board(board)
def setup_board(size):
board = [[0] * size for _ in range(size)]
board[0] = ['X'] * size
board[-1] = ['X'] * size
for i in range(1, size - 1):
row = ['O'] * size
row[0] = 'X'
row[-1] = 'X'
board[i] = row
return board
def print_board(board):
for row in range(len(board)):
print("")
for col in range(len(board)):
print(board[row][col], end=" ")
main()