20 分钟
Python 入门

for 循环与 range()

掌握 for 循环和 range() 函数

  • 掌握 for 循环基本语法
  • 掌握 range() 的三种用法
  • 学会用累加器求和

for 循环

for 循环用来重复执行代码。配合 range() 可以指定重复次数:

示例代码(可运行)
ℹ️range(5) 不包含5!

range(n) 生成 0, 1, 2, ..., n-1,一共 n 个数,但不包含 n。这叫「左闭右开」。

range() 三种用法

示例代码(可运行)
预测输出
for i in range(1, 10, 3):
    print(i)

遍历字符串

示例代码(可运行)

累加器模式(重要!)

求和得在循环外面先定义个变量,初始值设成0,每次循环往里累加就行。

示例代码(可运行)
找 Bugrange(1, 10) 只到9,不包含10。要求1到10应该用 range(1, 11)。
# 求1到10的和 total = 0 for i in range(1, 10): total += i print(total)
填空题填写空白处的代码
for i in range(1, 11, ): print(i) # 1,3,5,7,9
选择题

list(range(1, 10, 3)) 的结果是?

进阶原理

for 循环的底层原理

for i in range(5) 背后发生了什么?

range(5) 不是生成列表 [0,1,2,3,4],它创建的是个「可迭代对象」。for 循环每次找它取下一个值,拿到就跑循环体,拿不到(抛 StopIteration)就停。

示例代码(可运行)

Python 3 的 range 是惰性的,原因就在这——它不会一次性把所有数都生成出来,而是用到的时候才算。处理大数据的时候这点很关键:range(10亿) 不会把内存占满。(上面打印的具体字节数会随 Python 版本和系统位数变化,记住「range 恒定很小、list 随元素个数增长」这个规律即可。)

任何可迭代对象都可以用 for 遍历:字符串、列表、元组、字典、文件、生成器……后面会逐一学到。

选择题

list(range(5)) 的结果是?

选择题

list(range(2, 8, 2)) 的结果是?

资深工程师加餐

底层原理 · 大厂视角 · 工程经验,点卡片展开

print 把对象交给 sys.stdout 写出,显示时默认调用对象的 __str__;在交互环境直接回显变量走的是 __repr__(更偏「给开发者看的表示」)。sep 改分隔符、end 改结尾、file 可重定向到文件。面试常追问:生产环境为什么用 logging 而不是 print?因为日志有级别、能落盘、可结构化、可统一关闭,print 只适合临时调试。

挑战任务

偶数求和

简单+50 XP

用 for 循环计算 1 到 100 中所有偶数的和。

偶数求和
2 个测试用例

课后作业

阶乘计算

中等+25 XP

用 for 循环计算 10! = 1×2×3×...×10。

阶乘计算
1 个测试用例