gpt4 book ai didi

python - 我在使用与元组相关的 python 时遇到问题

转载 作者:行者123 更新时间:2023-12-04 08:33:57 24 4
gpt4 key购买 nike

我正在尝试创建一个游戏(井字游戏),我必须使用 3 个元组创建一个棋盘(称为 tab),每个元组有 3 个元素,代表一条线上的一个位置。 “X”由数字 1 表示,“O”由 -1 表示,空白由 0 表示。我试图创建一个接收参数的函数(在这种情况下,板是参数)并说它代表一个有效的董事会与否,但它总是给我错误的答案(在这种情况下说它是错误的),我不知道为什么。

tab = ((1, -1, 0), (0, 0, 1), (0, -1, 1))

def eh_tabuleiro(tab):
if len(tab) == 3:
if len(tab[0]) == 3 and len(tab[1]) == 3 and len(tab[2]) == 3:
if tab[0][0] or tab[0][1] or tab[0][2] or tab[1][0] or tab[1][1] or tab[1][2] or tab[2][0] or tab[2][1] or tab[2][2] != 1 or -1 or 0:
return False
else:
return True

else:
return False
else:
return False
要使板有效,它需要是一个包含三个元组和每个较小元组内的 3 个元素的元组。如果它有 2 个元素,或者不是 1/-1/0 有一个“-1”或任何其他东西,则函数返回 False。正如你所看到的,我的电路板是正确的,但它说它不是。谁能帮我?

最佳答案

问题出在or的长链上声明。比较以下内容:

if 1 or 2 == 3:  # Python reads this as `if 1 or (2 == 3):`
print('oops')

# prints 'oops'
if (1 == 3) or (2 == 3):
print('oops')

# does not print

对更具可读性的实现的建议:
def is_valid(tab):
if not isinstance(tab, tuple):
return False

if len(tab) != 3:
return False

for row in tab:
if not isinstance(row, tuple):
return False

if len(row) != 3:
return False

for element in row:
if element not in (-1, 0, 1):
return False

return True

关于python - 我在使用与元组相关的 python 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64895857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com