这个主题考什么
- 安排 if 和 elif 的顺序,避免宽泛条件挡在前面。
- 预测空集合、零和 None 的真值。
- 正确使用比较链和布尔运算符。
常见错误
- 想写 == 却写成了 =。
- 把宽泛的 if 放在更具体的 elif 前面,导致 elif 永远执行不到。
- 看错缩进,误以为某条语句属于上面的分支。
样题
从完整题库中挑出的 10 道代表题。先自己作答,再展开答案。
-
1. 小明判断「有奶且有茶」才做奶茶:True and False 的结果是?
显示答案
答案
B. False解析: and 遇到一侧为假就返回该值,不再看其余部分;两个条件都要成立,所以结果是 False,短路省掉了后面的判断。
-
2. 🧋 小明判断「有奶且有茶」才做奶茶,True and 0 的结果是?
显示答案
答案
B. 0解析: and 返回第一个假值,0 是假值,所以结果是 0 而不是 False;真值判断和对象本身不是一回事,这点常被忽略。
-
3. 🧋 小明根据销量标记「爆款」或「普通」,以下哪个等价于三元运算符 a if cond else b?
显示答案
答案
A. 用 if/else 分支分别取 a 或 b解析: 这个表达式就是 if/else 分别选 a 或 b 的简写。? : 属于 C 系语言,Python 没有。
-
4. 如果条件是 `if 0:`,会执行哪个分支?
显示答案
答案
A. else 分支解析: if 0 判断真假,0 为假,if 体被跳过、执行 else;空字符串和空列表也是同样结果,不会报错,分支只走一条。
-
5. 小明查看「珍珠」是否在奶茶加料列表 ["珍珠", "椰果", "布丁"] 里:"珍珠" ___ ["珍珠", "椰果", "布丁"]
显示答案
答案
in解析: in 判断成员关系并返回布尔值,boba 正在这三种配料里,所以为真;not in 是它的否定,两者都只返回布尔值。
-
6. 🧋 小明判断「有奶且有茶」才做奶茶,`1 and 2` 的结果转成 bool 是 ___
显示答案
答案
True解析: 1 and 2 因两边都为真而返回 2,bool(2) 是 True;值本身和它的真假是两个问题,别混为一谈。
-
7. 🧋 小明查看某款奶茶是否在菜单里,判断键'age'是否在字典d中:'age' ___ d
显示答案
答案
in解析: 对字典来说 in 查的是键不是值,'age' in d 问的是该键是否存在。要查值得用 d.values()。
-
8. 条件表达式把 0 当什么?输出什么?
x = 0 print("yes" if x else "no")显示答案
答案
no解析: 0、空字符串、空列表和 None 都算假,所以取 else 的值;只有 x 为真时才会打印 yes,这个规则叫真值判断。
-
9. `score(-5, 0)` 返回什么?
from math import sqrt # X, and Y variable names against [pylint]: C0104, but is the same as the stub, advise not to change this. def score(x, y): dart_location = sqrt(x * x + y * y) if dart_location <= 1.0: return 10 elif dart_location <= 5.0: return 5 elif dart_location <= 10.0: return 1 else: return 0 print(score(-5, 0))显示答案
答案
5解析: sqrt(25 + 0) = 5.0,大于 1.0 但不超过 5.0,第二个分支返回 5。判断用的是 <=,边界包含在内。
-
10. `equilateral([0.5, 0.5, 0.5])` 返回什么?
def valid(sides): return sum(sorted(sides)[:2]) >= sorted(sides)[2] and all( side > 0 for side in sides ) def equilateral(sides): return valid(sides) and all(sides[0] == side for side in sides) def isosceles(sides): return valid(sides) and any( side_1 == side_2 for side_1, side_2 in zip(sorted(sides), sorted(sides)[1:]) ) def scalene(sides): return valid(sides) and not isosceles(sides) print(equilateral([0.5, 0.5, 0.5]))显示答案
答案
True解析: 浮点同样适用:0.5 + 0.5 >= 0.5 且三边相等,等边判断返回 True。没有任何只许整数的限制。
常见问题
elif 等于 else 里面再写 if 吗?
逻辑上相似,但 elif 让分支互斥,也避免多一层缩进。
哪些值是假?
False、None、数字零,以及空字符串或空集合为假;大多数其他对象为真。
继续保持练习节奏。
完整题库会在这个浏览器里记住进度,支持按主题筛选,并包含每日一题和错题重练。