我已经做了一个代码,打印一个10x10的O网格,我想让所有的边显示"X“,所以我使用了一些if语句。前2工作正常,但第三次使所有的网格"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
氧X
氧X
氧X
氧X
氧X
氧X
氧X
氧X
氧X
当我希望它输出时:
X X
X O X
X O X
X O X
X O X
X O X
X O X
X O X
X O X
X X
我不知道出了什么问题,我一直在胡闹一段时间,试图找出出了什么问题。我会感谢你的帮助。
发布于 2018-03-15 20:08:24
你的问题是这些测试:
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语句,要么需要一个带有or的if语句。
最后,您有一堆单独的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"或者,您可以将所有这些条件放在一起,因为您对每个条件都做了相同的事情:
if row == 0 or col == 0 or row == size-1 or col == size-1:
board[row][col] = "X"
else:
board[row][col] = "O"发布于 2018-03-15 20:24:50
这不应该是答案,因为它没有具体回答你的问题--但是给你另一个视角,你可以让你的生活变得更容易,这样你就可以完全不用使用if语句,消除两个层次的嵌套。通常在Python中,有一种比使用/下一项更好的方法。
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()https://stackoverflow.com/questions/49308261
复制相似问题