学径 LearnPath

CAICP-E · Python 编程基础

两个条件一起看

与、或、非,以及谁先算。

讲解模式

这一节要学会什么

#what

上一课会写 if、elif、else。一次问一个条件。

这节课要把几个真假拼起来。这叫 逻辑运算

三个词:andornot。中文是:与、或、非。

你会把它们写进 if 里。年龄到了,并且作业做了,才进社团。

你还会看 谁先算。 看不清,就加括号。

这一课不在 if 里面再套 if。先把两个条件写在同一行问清楚。

两样都要,还是有一样就行

#hook

妈妈说:带水杯,并且带纸巾。两样都有,才算出门成功。 这就是 and

爸爸说:带帽子,或者带伞。有一样就行。 这就是 or

进社团呢?年龄到了,作业也交了,两关一起过。 现在可以把两关写在同一句 if 里。

与或非开关

如果觉得有点难 先画一张小表。 左边写条件,右边写 True 或 False。 再整句放进 if。

如果已经会了 写进社团:年龄并且作业。 再写分数档:及格并且不到 90。 给容易混的地方加上括号。

and、or、not

#explore-and-or-not

and 表示并且。两边都真,结果才真。

python
print(True and True)
print(True and False)
print(False and False)

只有第一行是 True

or 表示或者。有一边真,结果就真。

python
print(True or False)
print(False or False)

第一行 True。第二行 False

not 表示反过来。真变假,假变真。

python
print(not True)
print(not False)

可以想成两盏灯。and:两盏都亮才通过。 or:有一盏亮就通过。not:把亮和灭对调。

两盏灯和一个反向开关

它们常常和比较连用。比较先得到真假,再用 and、or、not 拼。

python
score = 85
print(score >= 60 and score < 90)
print(score > 90 or score == 85)
print(not score < 60)

三行都是 True。因为 85 及格了,但不到 90。 它等于 85。它也不是小于 60。

拼好了,放进 if

#explore-in-if

光打印 True、False 还不够。这节课要把结果交给 if。 真,就做里面那几句。

出门带齐两样:

python
cup = True
tissue = True
if cup and tissue:
    print("可以出门")
else:
    print("再检查书包")

两样都真,打印:可以出门 把 tissue 改成 False,就走 else。

书包清单:水杯和纸巾,帽子或伞

进社团要两关一起过:

python
age = 11
homework = True
if age >= 10 and homework:
    print("可以进社团")
else:
    print("还不能进")

11 够 10,作业也做了。所以打印:可以进社团 年龄不够,或作业没做,都进不去。

or 放进 if,有一边真就做。

python
hat = False
umbrella = True
if hat or umbrella:
    print("不怕晒也不怕雨")

有伞就行。打印:不怕晒也不怕雨

not 也可以直接当条件。

python
raining = False
if not raining:
    print("不用带伞")

没下雨,反过来是真。打印:不用带伞

真假值放进 if,先写成问句。

python
ok = True
if ok == True:
    print("通过")

ok 是真,所以会打印:通过

如果已经会了 ok 已经是真假时,也可以直接写 if ok:。 意思和 if ok == True 一样。

谁先算,谁后算

#explore-priority

几个词挤在一行,谁先算?记住这一串: 比较 → not → and → or。看不清就加括号。

python
print((True or False) and False)
print(True or (False and False))

第一行是 False。括号里先或,再和 False 做 and。 第二行是 True。括号让 and 先算完,再和 True 做 or。

两行不一样。所以看不清就加括号。

括号像交警把 3 加 2 拦在一起

加完再放进 if,意思写在脸上。

python
hungry = True
if (hungry or False) and False:
    print("这句话不会出现")
if hungry or (False and False):
    print("会进来")

第一句加了括号,变成假,跳过。第二句括号里的 and 先算,整句为真,会打印。

小项目:分数档和书包

#explore-band

85 分落在哪一档?及格了,又不到 90。 两个比较用 and 拼,再交给 if。

python
score = 85
if score >= 90:
    print("优秀")
elif score >= 60 and score < 90:
    print("及格")
else:
    print("继续加油")

85 不到 90。但 >= 60 并且 < 90 为真。 打印:及格

分数 85 落在 60 到 90 之间

再写正偶数。要大于 0,并且能被 2 整除。

python
n = 8
if n > 0 and n % 2 == 0:
    print("正偶数")

% 先算。再比较是不是 0。 再和 n > 0and。8 是正偶数,所以会打印。

写的时候主动加括号,别人一眼就懂。

python
if (score >= 60) and (score < 90):
    print("及格档")

结果一样。意思更清楚。

复杂提示要分两步说,下一课再把 if 套进 if。先让两个条件在同一行把关。

这节课我学会了

#review

记住这些:

  1. and:两边都真才真。
  2. or:有一边真就真。
  3. not:把真假反过来。
  4. 拼好的真假,可以直接放进 if
  5. 比较 → not → and → or。看不清就加括号。

试着在心里跑一遍:

python
age = 11
homework = True
if age >= 10 and homework:
    print("可以进社团")

两关都过,打印:可以进社团

下一课才把选择套进选择。先把两个条件问清楚。

试一试

#evaluate

看完就来检查一下。选错了也可以再想。

单选题

and 放进 if

cup = True,tissue = False。if cup and tissue: 打印「出门」,else 打印「再查」。结果是?

单选题

有括号时谁先算

表达式 (True or False) and False 的结果是?

单选题

进社团

age = 9,homework = True。if age >= 10 and homework: 打印「请进」。会打印吗?

多选题

逻辑和顺序

下列说法正确的有哪些?可以多选。

可多选

未登录时不会保存学习进度