逻辑运算
用并且、或者、反过来,把真假拼起来。
它是什么
逻辑运算 处理真和假。
三个词:and、or、not。
中文常说与、或、非。
一个条件常常不够。
出门既要带水杯,也要带纸巾,用 and。
帽子或者伞,带一样就行,用 or。
「不是下雨」则要把结果反过来,用 not。
print(True and True) # True
print(True and False) # False
print(True or False) # True
print(not True) # False名字从哪来
逻辑的英文是 logic。 今天电脑里的真假运算,常常叫布尔运算。
名字来自英国数学家乔治·布尔(George Boole,1815—1864)。 1847 年他发表《逻辑的数学分析》。 1854 年又出版《思维规律的研究》。 他用代数的方法写「并且」「或者」「不是」。 后来的电路和程序,都站在这座桥上。
Python 没有选用 C 语言的 &&、||、!。
它直接用英语单词 and、or、not。
这和 Python「尽量像人话」的脾气一致。
True 和 False 必须大写。
它们是布尔值,属于 数据类型 里的 bool。
它怎么工作
and 表示并且。
两边都真,结果才真。
or 表示或者。
有一边真,结果就真。
两边都真,结果也是真。
不是「只能选一个」。
not 表示反过来。
真变假,假变真。
常常和 比较 连用。
score = 85
print(score >= 60 and score < 90)先得到两个真假,再用 and 拼。
运算先后看 优先级。
not 先于 and,and 先于 or。
看不清就加括号。
print(True or False and False) # True,因为先算 and
print((True or False) and False) # False逻辑题可以画小表。 一格一格填,不容易错。
| A | B | A and B | A or B |
|---|---|---|---|
| 真 | 真 | 真 | 真 |
| 真 | 假 | 假 | 真 |
| 假 | 真 | 假 | 真 |
| 假 | 假 | 假 | 假 |
if 后面的条件,经常就是比较加逻辑。
见 分支。
初学先按真假来理解就够。 写复杂条件时,请加括号,让意思更清楚。
生活里在哪里
- 食堂:带饭卡并且到了开放时间,才能打饭。
- 图书馆:学生证或者老师证明,可以办借书。
- 过马路:红灯时不能过,是把「可以过」反过来。
- 游戏通关:收集钥匙并且打败守卫。
- 天气预报:降温或者下雨,就提醒加衣服。
电路里的开关串联有点像 and:都接通才亮。 并联有点像 or:有一路通就亮。 这就是布尔运算走进芯片的路。
和相近概念的差别
比较在问大小、是否相等。 逻辑在把已经得到的真假再组合。
score >= 60 是比较。
score >= 60 and score < 90 才是逻辑装配。
if 不是逻辑运算。
if 是路口。
逻辑运算给路口提供「能不能走」的答案。
not 和负号 - 也不一样。
负号管数字。
not 管真假。
常见误会
误会 1:把 and 当成或者。
并且要两边都真。 或者有一边真就行。
误会 2:中文写「并且」进代码。
代码里要写英文 and。
误会 3:or 表示「只能选一个」。
两边都真,结果仍是真。 它不是「二选一竞赛」。
误会 4:一长串不拆,读的人晕。
拆成两步,或加括号。
误会 5:忘记 not 只作用于紧跟的那一块。
复杂时请加括号。
not a and b 和 not (a and b) 不是一回事。
想知道更多
- 书:潘洪波《小学生 Python 趣味编程》(用「既要……又要……」这类生活判断练并且、或者)。
- 电影:《隐藏人物》(Hidden Figures)。和家长一起看:早期计算怎样把一步步判断写清楚。这是根据真实故事改编的电影,不是编程教材。
未登录时不会保存学习进度