我的问题是我正在检查可能的胜利列表(里面有每个组合的列表),我有这个,它检查胜利列表中的第一个列表,以及其中的所有元素。我如何才能使这个if语句检查所有元素?例如,0表示胜利列表中的所有不同列表并检查所有列表
获胜中的x:
if 'x' in wins[0] and wins[0][0] and wins[0][1] and wins[0][2] and wins[0][3] == 'x':
print("\nWell done! You've won!")
menu(
答案 0 :(得分:0)
这将检查每个子列表中的所有项目== x。
wins = [['x', 'x', 0, 'x'], ['x', 0, 0, 'x'], ['x', 'x', 'x', 'x']]
# Iterate over all sublists
for win in wins:
# Iterate over all elements in list, and check if all equals x
if all(i == 'x' for i in win):
# If this is the case - write a message and break out of the loop
print("Well done! You've won!")
break
如果您想按照自己的方式进行操作,则必须修复原始代码中的一些问题。你不能说if a and b and c and d == 'x'
。这与Python相互关联:
if a is not False and
b is not False and
c is not False and
d == 'x'
您想要检查每个项目,例如:
if wins[0][0] == 'x' and wins[0][1] == 'x' and wins[0][2] == 'x' and wins[0][3] == 'x':
然后把所有这些放在一个循环中:
for sublist in wins:
if sublist[0] == 'x' and sublist[1] == 'x' and sublist[2] == 'x' and sublist[3] == 'x':
print("Well done! You've won!")
break
但这真的很麻烦 - 你应该使用for循环。这是一个可能更清楚的例子:
for sublist in wins:
for item in sublist:
if item != 'x'
break
else:
print("Well done! You've won!")
break
此代码将循环遍历所有子列表,然后遍历子列表中的所有项目。如果遇到一个不等于'x'的项,则内循环被破坏。
在内部for循环结束时,有一个else子句。这在Python中很少使用,但可以非常好用。 else子句中的代码仅在循环未被破坏时执行。
在我们的例子中,这意味着所有项目都等于'x'。