这个主题考什么
- 预测 range 和 while 循环会执行多少次。
- 一步一步构造总和或筛选后的列表。
- 有意识地使用 break 和 continue,而不是用它们掩盖不清楚的条件。
常见错误
- 以为 range(1, 5) 包含 5。结束值不包含在内。
- 忘记更新 while 条件使用的变量。
- 在遍历列表时修改它,导致跳过元素。
样题
从完整题库中挑出的 10 道代表题。先自己作答,再展开答案。
-
1. 小明给第 2-5 号桌发优惠券,range(2, 6) 生成哪些桌号?
显示答案
答案
B. 2,3,4,5解析: range(start, stop) 含起点不含终点,所以是 2、3、4、5。把 stop 当成闭区间才会多出 6。
-
2. 🧋 小明给指定桌号发优惠券,range(10, 0, -1) 生成什么?
显示答案
答案
A. 10,9,8,...,1解析: 负步长向下计数,终点同样被排除,0 不会出现;range(10, 0, -1) 到 1 为止。想含 0 要写 range(10, -1, -1)。
-
3. 🧋 小明把奶茶名和价格配对显示,zip([1,2,3], ['a','b']) 生成几个对?
显示答案
答案
B. 2个解析: zip 在最短的可迭代对象耗尽时停止,多出的 3 被丢弃且不报错。zip_longest 会用填充值保留它。
-
4. 要依次处理列表里的每一笔订单,最直接的循环是?
显示答案
答案
C. for order in orders解析: for 直接遍历可迭代对象,耗尽即停;while True 则需要手动索引、退出判断和 break,代码更短也更安全。
-
5. 小明把奶茶名和价格配对显示,同时遍历两个列表用 ___(names, prices)
显示答案
答案
zip解析: zip 按位置并行遍历两个可迭代对象,每次产出一个元组供循环解包。它在较短的一方停下,长度不等会悄悄丢数据。
-
6. 🧋 小明给指定桌号发优惠券,range(3) 生成 ___ 个元素
显示答案
答案
3解析: range(3) 产出 0、1、2,共三个值,从 0 开始;新手常按 1 到 3 去数而答成 2,差别就在起点。
-
7. 哪个内置函数能为 for 循环生成整数序列?
显示答案
答案
range解析: range 是惰性产生等差序列的内置函数,不会在内存里建列表;套上 list() 才会把值实体化,大范围也不怕。
-
8. 小明把 range 转成列表,下面代码会打印什么?
print(list(range(2, 6)))显示答案
答案
[2, 3, 4, 5]解析: list() 把 range 的每个值实体化;6 是终点不会出现。range 本身是惰性的,直接打印只会显示 range(2, 6)。
-
9. 标牌把 "go" 的字母大写并连续打印。屏幕显示什么?
for ch in "go": print(ch.upper(), end="")显示答案
答案
GO解析: 遍历字符串得到单个字符,upper() 逐个转大写;end='' 去掉换行,字母之间没有分隔符,所以连着打印,结果就是 GO。
-
10. `factors(12)` 返回什么?
def factors(value): factor_list = [] divisor = 2 while value > 1: while value % divisor == 0: factor_list.append(divisor) value /= divisor divisor += 1 return factor_list print(factors(12))显示答案
答案
[2, 2, 3]解析: 12 分解为 2、2、3;内层先把 2 除尽,divisor 才移到 3。divisor 只增不减,所以结果升序。
常见问题
什么时候用 while 而不是 for?
遍历已知集合或范围时用 for;只知道停止条件时用 while。
break 会跳过 else 吗?
会。循环的 else 只在没有 break 正常结束时执行。
继续保持练习节奏。
完整题库会在这个浏览器里记住进度,支持按主题筛选,并包含每日一题和错题重练。