Python 基本不等于操作
需要帮助更好地理解不等于以及if循环中的and/or语句 问题 在下面的代码中,对于1st for循环,我期望的是除6和9之外的整数(但不是'or'if I use'和'then I's get needed output) 第二个for循环结果正常Python 基本不等于操作,python,python-3.x,Python,Python 3.x,需要帮助更好地理解不等于以及if循环中的and/or语句 问题 在下面的代码中,对于1st for循环,我期望的是除6和9之外的整数(但不是'or'if I use'和'then I's get needed output) 第二个for循环结果正常 a = [2, 6, 1, 9, 6, 3, 9] for x in a: if x != 6 or x != 9: print(f"1st for loop {x}") for y in a: if y == 6
a = [2, 6, 1, 9, 6, 3, 9]
for x in a:
if x != 6 or x != 9:
print(f"1st for loop {x}")
for y in a:
if y == 6 or y == 9:
print(f"2nd for loop {y}")
上述代码的输出:
如果你考虑条件的子句
x != 6 or x != 9
当x=6时
:
x != 6 --> not true, it definitely is 6
x != 9 --> true, as it (still) is 6
将这些条件与
或(“如果其中一个或两个条件都为真”)结合起来,自然会在x=6
和x=9
两种情况下都为真。您的难题是对布尔运算符工作方式的误解。如果x=6或x=9:
如果y==6或y==9,则执行与完全相反的操作:
。但这不是和或和的工作方式
如果您有一个测试a或B
,那么该测试的反面是not(a或B)
。如果要删除括号,则编写测试的等效方法是非A和非B
。注意,和
不是或
您正在测试数字,希望拒绝6和9。如果你说它不等于6吗?你得到的答案是肯定的,你的回答是肯定的,它是否也不等于9?,那么每个数字,包括6和9,都会通过测试。为什么?因为当你测试9时,它不等于6,所以9通过了第一次测试。测试6时,第一次测试失败,但它不等于9,因此6通过了第二次测试。你的代码说,如果其中一个测试成功,你就接受这个数字。这就是为什么您需要和
而不是或
。这两个测试都必须成功。或操作符的意思是“如果其中一个术语为真,那么它就是真的”,因此当您以这种方式编写或时,您接受任何不是6和9的术语,因此这是一种重言式。有时会帮助您导航此类表达式。在您的问题中,您说“除了6和9之外”
”,因此对于所需的输出,请使用和
操作!或者是Pythonic,如果x不在(6,9)
:)中,则可能是
x != 6 --> not true, it definitely is 6
x != 9 --> true, as it (still) is 6