day-011-for循环
本文介绍了Python中for循环的基本用法和常见技巧。主要内容包括:for循环的基础语法(遍历列表等序列)、range()函数生成数字序列、循环与列表操作结合(enumerate()、zip())、嵌套循环结构、循环控制语句(break/continue)以及for...else特殊语法。通过打印1-100数字、九九乘法表等示例,展示了for循环处理重复任务的强大能力。文章还总结了初学者常见误区
·
Day 11:for 循环——让电脑做重复的事
重复劳动是编程最擅长解决的。昨天学了条件判断,今天学循环——同一段代码自动执行多次,这正是计算机比人快的地方。
一、为什么要用循环?
假设你要打印 1 到 100:
# 不用循环——写到天亮
print(1)
print(2)
print(3)
# ... 写到100会疯掉
# 用循环——三行搞定
for i in range(1, 101):
print(i)
循环就是让一段代码反复执行。Python 有两种循环:for 和 while,今天先学 for。
二、for 循环基础——遍历一个序列
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
# 输出:
# 我喜欢吃苹果
# 我喜欢吃香蕉
# 我喜欢吃橙子
执行过程:
- 取列表第一个元素
"苹果"赋给fruit,执行循环体 - 取第二个元素
"香蕉",再执行一遍 - 取第三个元素
"橙子",再执行一遍 - 没元素了,循环结束
for 后面可以跟任何"可迭代对象"——列表、元组、字典、集合、字符串、range()……
# 遍历字符串(每个字符)
for char in "Hello":
print(char) # H e l l o 每行一个
# 遍历字典
student = {"name": "小明", "age": 25}
for key, value in student.items():
print(f"{key}: {value}")
# 遍历集合
for num in {1, 2, 3}:
print(num) # 顺序不确定
三、range() 函数——生成数字序列
range() 是 for 循环的最佳搭档,用来生成一系列数字:
# range(stop):从0到stop-1
for i in range(5):
print(i) # 0 1 2 3 4
# range(start, stop):从start到stop-1
for i in range(5, 10):
print(i) # 5 6 7 8 9
# range(start, stop, step):带步长
for i in range(0, 10, 2):
print(i) # 0 2 4 6 8 偶数
# 倒着数
for i in range(10, 0, -1):
print(i) # 10 9 8 7 6 5 4 3 2 1
记忆口诀:range 和切片一样,左闭右开——包含 start,不包含 stop。
四、循环配合列表——三大利器
enumerate()——同时获取索引和值
fruits = ["苹果", "香蕉", "橙子"]
# 不用 enumerate(啰嗦)
for i in range(len(fruits)):
print(f"{i}: {fruits[i]}")
# 用 enumerate(优雅)
for i, fruit in enumerate(fruits):
print(f"{i}: {fruit}")
# enumerate() 还能设置起始编号
for i, fruit in enumerate(fruits, start=1):
print(f"{i}. {fruit}") # 1. 苹果 2. 香蕉 3. 橙子
zip()——同时遍历多个列表
names = ["小明", "小红", "小刚"]
scores = [85, 92, 78]
cities = ["北京", "上海", "广州"]
for name, score, city in zip(names, scores, cities):
print(f"{name}({city}):{score}分")
# 小明(北京):85分
# 小红(上海):92分
# 小刚(广州):78分
for + 列表推导式——
# 传统的循环累加
total = 0
for i in range(1, 101):
total += i
print(total) # 5050
# 直接用 sum() + 生成器
total = sum(i for i in range(1, 101))
print(total) # 5050
五、嵌套循环——循环里面套循环
# 九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}×{i}={i*j}", end="\t")
print() # 换行
输出:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
...
1×9=9 2×9=18 3×9=27 ... 9×9=81
执行顺序:外层循环执行1次,内层循环执行完整的一轮。
六、循环中的 break 和 continue
break——直接跳出循环
# 找列表里第一个偶数
nums = [1, 3, 7, 8, 9, 10]
for num in nums:
if num % 2 == 0:
print(f"找到了:{num}")
break # 找到就停,后面的不看了
# 输出:找到了:8
continue——跳过当前这次,继续下次
# 只打印奇数(跳过偶数)
for i in range(1, 11):
if i % 2 == 0:
continue # 偶数就跳过,不执行后面的 print
print(i) # 1 3 5 7 9
break vs continue:
break:彻底不循环了,跳出continue:只是跳过这一次,循环继续
七、for…else——循环正常结束才执行
这是一个 Python 独特但少为人知的语法:
# 查找元素,没找到时执行 else
nums = [1, 3, 5, 7]
target = 4
for num in nums:
if num == target:
print("找到了!")
break
else:
# 只有当循环没有被 break 打断时才执行
print("没找到")
# 输出:没找到
八、综合练习
练习1:求和与计数
# 求 1+2+3+...+100 的和
total = 0
for i in range(1, 101):
total += i
print(f"1到100的和:{total}") # 5050
# 统计1-100中能被3整除的数的个数
count = 0
for i in range(1, 101):
if i % 3 == 0:
count += 1
print(f"1-100中能被3整除的有{count}个") # 33
练习2:猜数字游戏框架
import random
answer = random.randint(1, 100)
guess = None
attempts = 0
print("猜数字游戏开始!(1-100)")
while guess != answer:
guess = int(input("猜一个数字:"))
attempts += 1
if guess > answer:
print("大了!")
elif guess < answer:
print("小了!")
print(f"猜对了!共猜了{attempts}次")
九、今日学习总结
| 学习内容 | 掌握情况 | 一句话要点 |
|---|---|---|
| for 循环基础 | ✅ 重点 | 遍历序列中的每个元素 |
| range(start, stop, step) | ✅ 重点 | 生成数字序列,左闭右开 |
| enumerate() | ✅ 理解 | 同时取索引和值 |
| zip() | ✅ 了解 | 同时遍历多个列表 |
| 嵌套循环 | ✅ 理解 | 外层一圈,内层一轮 |
| break / continue | ✅ 重点 | 跳出 / 跳过本次 |
| for…else | ✅ 了解 | 没break才执行else |
今日踩坑记录
- range(5) 是 0~4 不是 1~5:初学者特别容易以为 range(5) 就是 1,2,3,4,5。记住:从0开始,不到5。
- 嵌套循环里的 break 只跳出内层:
break不会跳出外层循环。想跳出全部循环,可以设一个标志变量或者用函数封装 +return。 - 空序列的 for 循环不会报错:
for i in []:直接跳过,什么也不执行。这其实是特性不是 bug,配合 for…else 很好用。
十、明天学什么?
今天学了 for 循环,明天讲另一个循环——while 循环,以及 break/continue 的更多实战用法。
计算机不怕累,你怕累。把重复的事交给循环,把思考留给自己。
第11天,打卡完成。明天见!
本系列是个人学习笔记,如有错误欢迎在评论区指正交流。
更多推荐


所有评论(0)