我做了一个代码,可以打印一个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 X X X X X X X
O X X X X X X X
O X X X X X X X
O X X X X X X X
O X X X X X X X
O X X X X X X X
O X X X X X X X
O 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 X
X O O O O O X
X O O O O O X
X O O O O O X
X O O O O O X
X O O O O O X
X O O O O O X
X O O O O O X
X O O O O O X
X X X X X X X X X X X X X X X
我不知道出了什么事,我一直在胡闹一段时间,想弄清楚出了什么事。我们将不胜感激。你知道吗
你的问题在于这些测试:
这实际上并不是在测试当前的
row, col
是否在第一行。它测试当前row, col
(将是0
)中的任何值与该列顶部的任何值(将是X
或O
)相同。你知道吗你只想这样做:
或者,更简单地说:
下一个问题是,您试图将底部和右侧放在一个测试中。但这意味着你只需要在右下角放一个
X
,而不是在每个底部和每个右槽。要么需要两个if
语句,要么需要一个if
语句和一个or
语句。你知道吗最后,有一堆独立的
if
语句。这意味着else
连接到最后一个,而不是全部。换句话说,不在右边的所有内容都将设置为O
,这将覆盖为顶部和左侧边缘设置的X
。要解决这个问题,您需要使用elif
将if
链接在一起。你知道吗综合起来:
或者你可以把所有这些条件放在一起,因为你对每个条件都做同样的事情:
这不应该是答案,因为它没有回答你的问题,但只是给你另一个角度,你可以让你的生活更容易这样做,你不必使用if语句在所有,摆脱两个层次的嵌套。通常在Python中,有一种比for/nexting遍历每一项更好的方法。你知道吗
相关问题 更多 >
编程相关推荐