Python Day06:循环入门 — for 循环
🕐 预计用时:2-3 小时 | 🎯 今日目标:掌握 for 循环,让程序帮你做重复劳动
📖 今日目录
1. 为什么需要循环
想象你在工厂流水线上拧螺丝——同一个动作重复 1000 次。人会累,但计算机不会。
循环就是让计算机自动重复执行某段代码。
循环就像流水线——同样的动作自动重复,不需要人工干预
# 没有循环:手动写 5 遍print("Hello!")print("Hello!")print("Hello!")print("Hello!")print("Hello!")# 有循环:一行搞定for i in range(5): print("Hello!")
2. for 循环基本语法
for 循环的基本结构:for 变量 in 可迭代对象
📐 语法结构
for 变量 in 可迭代对象: 循环体(要重复执行的代码)
💡 理解 for 循环的三要素: 1. 变量:每次循环都会被赋一个新值(就像流水线上的工人,每件产品都检查一遍) 2. 可迭代对象:一组要处理的数据(列表、字符串、range等) 3. 缩进:Python 用缩进表示"这段代码属于循环体"
🎯 最简单的例子
# 遍历一个列表fruits = ["苹果", "香蕉", "橘子"]for fruit in fruits: print("我喜欢吃" + fruit)
输出:
我喜欢吃苹果我喜欢吃香蕉我喜欢吃橘子
执行过程:
第 1 次循环:fruit = "苹果" → 打印 "我喜欢吃苹果"第 2 次循环:fruit = "香蕉" → 打印 "我喜欢吃香蕉"第 3 次循环:fruit = "橘子" → 打印 "我喜欢吃橘子"循环结束(列表遍历完了)
3. range() 函数
range() 是"数数器"——生成一串数字,配合 for 循环使用。
range() 就像节拍器,控制循环的次数
三种用法
| | | |
|---|
range(n) | | range(5) | |
range(start, end) | | range(2, 6) | |
range(start, end, step) | | range(0, 10, 2) | |
# 打印 0~4for i in range(5): print(i)# 打印 1~10for i in range(1, 11): # 注意:range(1, 11) 不包含 11 print(i)# 打印偶数:0, 2, 4, 6, 8for i in range(0, 10, 2): print(i)# 倒序:5, 4, 3, 2, 1for i in range(5, 0, -1): print(i)
⚠️ range() 的"左闭右开"规则range(start, end) 包含 start,但不包含 end! 就像楼层:1~10楼不包括"第11楼"。想打印1到10,要写 range(1, 11)。
4. 遍历字符串和列表
🔤 遍历字符串
# 逐个打印每个字符word = "Python"for ch in word: print(ch)
输出:
Python
📋 遍历列表
# 计算列表中所有数字的总和numbers = [10, 20, 30, 40, 50]total = 0for n in numbers: total += nprint("总和:", total) # 总和: 150
🔢 配合 range(len()) 遍历
# 用索引遍历(当你需要知道"第几个"的时候)colors = ["红", "绿", "蓝"]for i in range(len(colors)): print("第", i+1, "个颜色是", colors[i])
5. enumerate() 同时拿索引和值
enumerate() 让你同时拿到"第几个"和"是什么"
enumerate() 让你在遍历时同时获得"位置"和"内容"。
colors = ["红", "绿", "蓝"]# 不用 enumerate:需要额外变量for i in range(len(colors)): print(i, colors[i])# 用 enumerate:更优雅for i, color in enumerate(colors): print(i, color)
输出(两种方式一样):
0 红1 绿2 蓝
💡 什么时候用 enumerate? 当你需要知道"这是第几个元素"的时候。比如:排行榜、编号列表、计数器。
6. break 和 continue
🛑 break:立即跳出循环
# 找到第一个偶数就停止numbers = [1, 3, 4, 7, 8, 9]for n in numbers: if n % 2 == 0: print("找到偶数:", n) break # 跳出循环,不再检查后面的print("循环结束")
输出:
找到偶数: 4循环结束
⏭️ continue:跳过当前,继续下一次
# 只打印奇数for i in range(1, 11): if i % 2 == 0: continue # 跳过偶数,继续下一次循环 print(i)
输出:
13579
💡 break vs continue 对比:break = 撒手不干了(整个循环结束) continue = 这个跳过,下一个继续(单次循环跳过)
7. 嵌套 for 循环
循环里面套循环——就像"外层循环控制行,内层循环控制列"。
九九乘法表是嵌套循环的经典应用
📐 九九乘法表
for i in range(1, 10): # 外层循环:1~9(行) for j in range(1, i+1): # 内层循环:1~i(列) print(j, "×", i, "=", i*j, end="\t") print() # 换行
输出:
1 × 1 = 11 × 2 = 2 2 × 2 = 41 × 3 = 3 2 × 3 = 6 3 × 3 = 9...(省略)1 × 9 = 9 2 × 9 = 18 3 × 9 = 27 ... 9 × 9 = 81
💡 嵌套循环的执行顺序: 外层循环走1步 → 内层循环跑完全部 → 外层再走1步 → 内层再跑完全部... 就像时钟:秒针转一圈(内层),分针才走一格(外层)。
8. 实战项目
🏋️ 实战 1:猜数字游戏(带次数限制)
import randomsecret = random.randint(1, 100) # 随机生成 1~100 的秘密数字max_tries = 7 # 最多猜 7 次print("=== 猜数字游戏 ===")print("我心里有一个 1~100 的数字,你有 7 次机会猜!")for attempt in range(1, max_tries + 1): guess = int(input(f"第 {attempt} 次猜测:")) if guess == secret: print(f"🎉 恭喜!猜对了!答案就是 {secret}!") print(f"你用了 {attempt} 次猜中") break elif guess < secret: print("太小了!再大一点 ↑") else: print("太大了!再小一点 ↓")else: # for/else:循环正常结束(没有 break)时执行 print(f"💀 机会用完了!答案是 {secret}")
🏋️ 实战 2:九九乘法表(美化版)
print("╔══════════════════════════════════════╗")print("║ 九 九 乘 法 表 ║")print("╠══════════════════════════════════════╣")for i in range(1, 10): print("║", end="") for j in range(1, i+1): result = i * j print(f" {j}×{i}={result:2d}", end="") # 补齐空格 for k in range(i+1, 10): print(" ", end="") print(" ║")print("╚══════════════════════════════════════╝")
🏋️ 练习题
练习 1:用 for 循环计算 1+2+3+...+100 的和。
练习 2:打印 1~20 中所有能被 3 整除的数。
练习 3:用 for 循环打印一个倒三角形:
***************
练习 4:用 for 循环和 enumerate 打印一个列表,每行显示 "第X项:内容"。
练习 5:写一个程序,输入一个正整数 n,计算 n 的阶乘(n! = 1×2×3×...×n)。
9. 今日小结
| |
|---|
| for 变量 in 可迭代对象: |
| 生成数字序列,三种用法:range(n)、range(start, end)、range(start, end, step) |
| for ch in "hello" |
| 同时获取索引和值,比 range(len()) 更优雅 |
| |
| |
| |
| |
🧠 自检清单
⬜ 能用 for 循环遍历列表和字符串
⬜ 能用 range() 生成指定范围的数字
⬜ 知道 range() 的"左闭右开"规则
⬜ 能用 enumerate() 同时获取索引和值
⬜ 知道 break 和 continue 的区别
⭐ 能用嵌套循环打印九九乘法表
⭐ 能写一个带次数限制的猜数字游戏
🎯 Day 7 预告
明天学习while 循环——另一种循环方式,适合"不知道要循环多少次"的场景。
就像"直到……才停止"的逻辑!🔁
📅 Day 6 完成!你已经掌握了 for 循环。明天见! 🚀