如何让Python方法仅在三个条件全为True时返回True?
问题分析与解决方案
首先纠正你代码里的关键笔误:statment3 = self.z = b 是赋值语句,会把b的值赋给self.z,同时statement3的取值是b本身,这不是你需要的比较逻辑——你应该写成statement3 = self.z == b,这样才是判断self.z是否等于b的布尔值。
你的需求是仅当三个条件全部为True时返回True,否则返回False,这完全符合逻辑与(and)的语义:只有所有操作数都为True时,结果才为True,任意一个为False则结果为False。这是最简洁、可读性最高的实现方式,根本不需要用异或(^)。
最优实现
分步清晰版
def check_valid(self, a, b): statement1 = self.x == 0 statement2 = self.y == a statement3 = self.z == b # 修正为比较运算符== return statement1 and statement2 and statement3
极简合并版
def check_valid(self, a, b): return self.x == 0 and self.y == a and self.z == b
为什么异或思路不适用
异或(^)在布尔运算中的逻辑是:当参与运算的布尔值里有奇数个True时返回True,否则返回False。这和你“全为True才返回True”的需求完全不匹配:
- 三个全True时,
True ^ True ^ True = True,这符合预期; - 但如果是一个True、两个False时,结果也是True,这就不符合需求;
- 你提到的
return True ^ statement1 ^ statement2 ^ statement3本质上是计算not (statement1 == statement2 == statement3),逻辑完全偏离了你的需求,自然不是正确方案。
内容的提问来源于stack exchange,提问作者Fábio Pires
相关产品推荐
相关产品推荐

