2

我有这行简单的代码:

i = " "

if i != "" or i != " ":
    print("Something")

这应该很简单,如果 i 不为空""或它不是空格" ",但它是,打印一些东西。现在,如果这两个条件之一是,为什么我会看到打印的东西False

4

5 回答 5

4

德摩根定律

"not (A and B)" is the same as "(not A) or (not B)"

also,

"not (A or B)" is the same as "(not A) and (not B)".

就您而言,根据第一条陈述,您已经有效地编写了

if not (i == "" and i == " "):

这是不可能发生的。因此,无论输入是什么,(i == "" and i == " ")总会返回False,否定它总会给出True


相反,你应该这样写

if i != "" and i != " ":

或根据德摩根定律中引用的第二个陈述,

if not (i == "" or i == " "):
于 2016-02-19T03:29:57.073 回答
0

这个条件:

if i != "" or i != " ":

永远都是真的。你可能想要and而不是or......

于 2016-02-19T03:30:39.550 回答
0

我将解释如何or工作。
如果检查第一个条件,如果为真,它甚至不检查第二个条件。
如果第一个条件为假,那么它检查第二个条件,如果为真,则整个事情都为真。
因为

A B Result  
0 0   0  
0 1   1  
1 0   1  
1 1   1  

所以如果你想同时满足非空和空间使用的条件and

于 2016-02-19T03:33:41.440 回答
0

您的打印语句将始终发生,因为您的逻辑语句始终为真。
if A or B:
如果 A 为真或 B 为真或两者都为真,则为真。由于您编写语句的方式,两者之一将始终为 True。更准确地说,根据您所写的陈述, if 陈述与if True or False:简化为if True:.
似乎您想要一个and语句而不是or.

于 2016-02-19T03:36:05.297 回答
0
i = " "

你的条件是

if i != "" or i != " ":

这里i != ""将评估为True并将i != " "评估为False

所以你会有True or False=True

你可以在这里参考这个真值表OR

True  or False = True
False or True  = True
True  or True  = True
False or False = False
于 2016-02-19T08:14:11.407 回答