“如果逻辑运算符为'and',则逻辑错误if语句令人困惑”

时间:2019-05-22 11:01:08

标签: python for-loop

当我在if语句中对"and"进行编码(python 3.7)时,发现它很奇怪。我期望除(3,3)以外的所有值,但它忽略了所有包含3且输出为

(0,0)(0,1)(0,2)(1,0)(1,1)(1,2)(2,0)(2,1)(2,2)
for i in range(4):
    for j in range(4):
        if (i !=3 and j !=3):
           print(i,j)

2 个答案:

答案 0 :(得分:0)

您先前的条件语句i !=3 and j !=3转换为not (i == 3 or j == 3),它从i和j中都排除了3,因此您在输出中看不到3

正确的条件语句实际上是not (i == 3 and j == 3),它转换为i != 3 or j !=3

根据任一条件语句更改if条件,将产生正确的输出

for i in range(4):
    for j in range(4):
        #Or not (i == 3 and j == 3)
        if i != 3 or j !=3:
            print(i,j)

输出将为

0 0
0 1
0 2
0 3
1 0
1 1
1 2
1 3
2 0
2 1
2 2
2 3
3 0
3 1
3 2

答案 1 :(得分:0)

对于预期的结果,您应该使用AND运算符,与AND运算符一样,例如(0,3)-> T F-> F结果为False,因此不会打印 但是如果是OR->(10,3)-> T F->T。请检查AND和OR的真值表。