在一行 Python 中组合 AND/OR 语句

问题描述 投票:0回答:1

我正在用 python 编写一些代码,现在我遇到了以下 IF 语句的问题:

if Row1==['X', 'X', 'X'] or Row2==['X', 'X', 'X'] or Row3==['X', 'X', 'X'] or ((Row1[0] and Row2[0] and   Row3[0])=='X') or ((Row1[1] and Row2[1] and Row3[1])=='X'):

前 3 个陈述似乎效果很好。但是堡垒一 ((Row1[0] 和 Row2[0] 和 Row3[0])=='X') 把事情搞砸了。也就是说,“与”和“或”逻辑并不按规定执行。

所以我想我的语法有问题。

任何想法表示赞赏

我尝试了语法的变体,例如添加 () a 或 a ;他们都没有工作。有效的方法是,如果我将每个语句分隔在单独的 elif 中;所以:

if Row1==['X', 'X', 'X'] or Row2==['X', 'X', 'X'] or Row3==['X', 'X', 'X']: print("Speler 1 XXX heeft gewonnen") elif ((Row1[0] and Row2[0] and Row3[0])=='X'): print("Speler 1 XXX heeft gewonnen TEST")

syntax
1个回答
0
投票

if 语句中的问题在于您尝试检查每行特定位置的字符是否为“X”的方式。 ((Row1[0] and Row2[0] and Row3[0])=='X') 之类的语句不会产生预期的结果。

if Row1 == ['X', 'X', 'X'] or Row2 == ['X', 'X', 'X'] or Row3 == ['X', 'X', 'X' ] or (Row1[0] == Row2[0] == Row3[0] == 'X') or (Row1[1] == Row2[1] == Row3[1] == 'X'):
     print("Speler 1 XXX heeft gewonnen")

在上面的语句中,我使用

==
运算符来检查每行中相同位置的值是否为“X”。此外,我使用
or
操作来组合确定获胜所需的所有条件。

© www.soinside.com 2019 - 2024. All rights reserved.