将 AND/OR 语句合并到一行 python 中

Combining AND/OR statements in one python line

提问人:Schieper 提问时间:11/12/2023 更新时间:11/12/2023 访问量:26

问:

我正在用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")

语法

评论

0赞 Ann L. 11/12/2023
你想用什么来实现?您是否正在尝试对这些值进行逻辑 AND?它们是布尔值吗?或者,至少是空值?(Row1[0] and Row2[0] and Row3[0])
0赞 Ann L. 11/12/2023
如果你想说“如果所有 3 行值都具有相同的第一个值,并且它等于'X'”,那么你的语法肯定是关闭的。

答:

0赞 aazizzailani 11/12/2023 #1

if 语句中的问题在于您尝试检查每行特定位置的字符是否为“X”的方式。像 ((Row1[0] 和 Row2[0] 和 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

评论

0赞 Schieper 11/12/2023
棒。。这奏效了。