为什么此 if/else 语句中的这些布尔表达式未按预期进行计算?

Why are these boolean expressions in this if/else statement not evaluating as expected?

能否请您看一下并告诉我代码有什么问题?

e = eval(input('enter 1 '))
f = eval(input('enter 3 '))

if e != 1 and f != 3:
    print('you got it wrong!')
else:
    print("correct")

所以这里的问题是,如果我输入了 2 个数字中的 1 个正确,它说它是正确的,但它不应该因为我有一个“和”运算符?

当然,我可以将代码更改为这样的代码,这样就可以正常工作:

if e == 1 and f == 3:
    print('correct')
else:
    print("you got it wrong!")

但另一方面我想了解我做错了什么? 谢谢:)

if e != 1 and f != 3:表示如果e是错误的f也是错误的。但是正如你提到的,你输入了一个正确的,然后 and 语句没有通过,因为其中一个仍然是正确的。

你需要or:

if e != 1 or f != 3:
    print('you got it wrong!')
else:
    print("correct")

顺便说一句,我建议您使用 int 而不是 eval(因为 eval 是不好的做法,并且您正在转换为整数):

e = int(input('enter 1 '))
f = int(input('enter 3 '))

阅读:Why is using 'eval' a bad practice?

逻辑错误。使用 De Morgan's laws:

x AND y 反转 → x NAND yNOT x OR NOT y

其中x代表e == 1y代表f == 3