Day 11:for 循环——让电脑做重复的事

重复劳动是编程最擅长解决的。昨天学了条件判断,今天学循环——同一段代码自动执行多次,这正是计算机比人快的地方。


一、为什么要用循环?

假设你要打印 1 到 100:

# 不用循环——写到天亮
print(1)
print(2)
print(3)
# ... 写到100会疯掉

# 用循环——三行搞定
for i in range(1, 101):
    print(i)

循环就是让一段代码反复执行。Python 有两种循环:forwhile,今天先学 for


二、for 循环基础——遍历一个序列

fruits = ["苹果", "香蕉", "橙子"]

for fruit in fruits:
    print(f"我喜欢吃{fruit}")

# 输出:
# 我喜欢吃苹果
# 我喜欢吃香蕉
# 我喜欢吃橙子

执行过程

  1. 取列表第一个元素 "苹果" 赋给 fruit,执行循环体
  2. 取第二个元素 "香蕉",再执行一遍
  3. 取第三个元素 "橙子",再执行一遍
  4. 没元素了,循环结束

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

今日踩坑记录

  1. range(5) 是 0~4 不是 1~5:初学者特别容易以为 range(5) 就是 1,2,3,4,5。记住:从0开始,不到5。
  2. 嵌套循环里的 break 只跳出内层break 不会跳出外层循环。想跳出全部循环,可以设一个标志变量或者用函数封装 + return
  3. 空序列的 for 循环不会报错for i in []: 直接跳过,什么也不执行。这其实是特性不是 bug,配合 for…else 很好用。

十、明天学什么?

今天学了 for 循环,明天讲另一个循环——while 循环,以及 break/continue 的更多实战用法。


计算机不怕累,你怕累。把重复的事交给循环,把思考留给自己。

第11天,打卡完成。明天见!


本系列是个人学习笔记,如有错误欢迎在评论区指正交流。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐