for 循环与 range()
掌握 for 循环和 range() 函数
- 掌握 for 循环基本语法
- 掌握 range() 的三种用法
- 学会用累加器求和
for 循环
for 循环用来重复执行代码。配合 range() 可以指定重复次数:
range(n) 生成 0, 1, 2, ..., n-1,一共 n 个数,但不包含 n。这叫「左闭右开」。
range() 三种用法
for i in range(1, 10, 3):
print(i)遍历字符串
累加器模式(重要!)
求和得在循环外面先定义个变量,初始值设成0,每次循环往里累加就行。
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 只适合临时调试。
挑战任务
偶数求和
用 for 循环计算 1 到 100 中所有偶数的和。
课后作业
阶乘计算
用 for 循环计算 10! = 1×2×3×...×10。