Python 基本不等于操作

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

需要帮助更好地理解不等于以及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 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