Python中与或非运算(布尔运算)

就像可以用算术运算符(+、−、*、/ 等)把数字组合起来一样,我们也可以用布尔运算符把布尔值组合起来。Python 中的 3 个主要布尔运算符是 and、or 和 not。当用布尔运算符组合两个或多个布尔值时,其结果还是一个布尔值。

and(与)

and 表示“与”,使用这个运算符来判断两个布尔值是否都为 True。当两个布尔值都为True时,结果为 True;否则,结果为 False。

>>> True and True
True
>>> True and False
False
>>> False and False
False


来看一个例子,我们用变量 isAfterSchool 表示“是否放学”,用变量 isFinishHomework 表示“是否完成作业”,只有当“已经放学”并且“完成作业”后,才可以出去玩。

然后,我们将变量 isAfterSchool 设置为 True,表示已经放学;将变量 isFinishHomework 设置为 False,表示没有完成作业。通过表达式 isAfterSchool and isFinishHomework 的结果,我们来看能不能出去玩。

> >>> isAfterSchool=True
>>> isFinishHomework=False
>>> isAfterSchool and  isFinishHomework
False

结果是 False,表示两个条件没有全部满足,所以不能出去玩。

当作业完成以后,我们把变量 isFinishHomework 修改为 True,再来看一下表达式 isAfterSchool and isFinishHomework 的结果:

> >>> isAfterSchool=True
>>> isFinishHomework=True
>>> isAfterSchool and isFinishHomework
True

这次的结果是 True,表示已经具备了出去玩的条件。

或(or)

布尔运算符 or 表示“或”,使用该运算符可以判断两个布尔值中是否有一个为 True。当两个布尔值中至少有一个为 True 时,结果为 True;否则,结果为 False。

> >>> True or True
True
>>> True or False
True
>>> False or False
False


还是来看前面给出的例子,这次我们修改了条件,只要“已经放学”或者“完成作业”有一项满足,就可以出去玩了。

我们将变量 isAfterSchool 设置为 True,表示已经放学;将变量 isFinishHomework 设置为 False,表示没有完成作业。通过表达式 isAfterSchool or isFinishHomework 的结果,我们来看能不能出去玩。

> >>> isAfterSchool=True
>>> isFinishHomework=False
>>> isAfterSchool or isFinishHomework
True

结果是 True,因为至少满足了两个条件之中的一个,所以可以出去玩。 

not(非)

not 表示“非”,使用这个运算符将值取反,把 False 转换成 True,或者把 True 转换成 False。

> >>> not True
False
>>> not False
True


还是来看前面给出的例子,假设已经将变量 isFinishHomework 设置为 True,表示已经完成了作业。突然发现,还漏了一项作业,这时我们可以通过 not 运算符,来修改 isFinishHomework 变量。

> >>> isFinishHomework=True
>>> not isFinishHomework
False

组合布尔运算符

当我们把布尔运算符组合到一起时,事情变得有趣起来。例如,如果今天是周末,那么可以出去玩;如果今天不是周末,那么需要放学并且完成作业才可以出去玩。

> >>> isWeekend=False
>>> isAfterSchool=True
>>> isFinishHomework=True
>>> isWeekend or (not isWeekend and isAfterSchool and isFinishHomework)
True

在上面的示例中,我们看到今天不是周末,已经放学并且写完了作业,结果是可以出去玩。我们把 not isWeekend and isAfterSchool and isFinishHomework 放到括号中,是为了保证这部分要一起执行。