为什么此 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 y
→ NOT x OR NOT y
其中x
代表e == 1
,y
代表f == 3
能否请您看一下并告诉我代码有什么问题?
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 y
→ NOT x OR NOT y
其中x
代表e == 1
,y
代表f == 3