别再手动重复了!Python for循环让你秒变“自动机器人”
你有没有遇到过这样的场景:手头有一堆数据——比如全班同学的名字、一箱水果、或者一串数字——每个都需要做相同的操作,但一个一个手动处理又太麻烦?比如给每个朋友发一条定制消息,或者检查每个数字是否符合某个条件。这时候,Python 的 for 循环就是那个让你从“手动档”切换到“自动驾驶”的魔法开关。
for循环是什么?排队而已
for 循环的操作逻辑和人排队一模一样:队伍里每个人依次上前,做同一件事。假设你要对每个朋友说“你好”,代码就是:
friends = ["小明", "小红", "小刚"]
for friend in friends:
print("你好," + friend)
输出:
你好,小明
你好,小红
你好,小刚
你看,电脑自动帮你说了三次“你好”,每次换一个名字。friend 就像一个临时标签,每次从队伍里拿一个人贴上,然后执行下面的动作。
基本格式:变量 in 序列
for 变量 in 序列:
重复做的事
- 变量:临时存放当前拿到的元素,名字随意(比如
friend、item、x都行)。 - 序列:一筐东西。可以是列表、字符串、元组,或者用
range()生成的数字范围。
数数?用 range()
想从1数到5?不用写五条 print,用 range() 搞定:
for i in range(1, 6): # 生成 1,2,3,4,5
print(i)
输出:
1
2
3
4
5
range(1, 6) 就像排队时发的号码牌,从1开始,到5结束——注意,6 不包含,这是 Python 的惯例。默认情况 range(5) 会生成 0,1,2,3,4,所以写 range(5) 打印出来的是 0 到 4。这个细节经常在选择题里出现。
生活例子:给巧克力包糖纸
有一盒巧克力,每颗都要包上金色糖纸:
chocolates = ["牛奶糖", "黑巧", "白巧"]
for chocolate in chocolates:
print(f"给 {chocolate} 包上金色糖纸")
输出:
给 牛奶糖 包上金色糖纸
给 黑巧 包上金色糖纸
给 白巧 包上金色糖纸
这个模式几乎可以套在任何“遍历”场景里。
题目实战:水仙花数 → 拆解数字位
先看一道经典题:判断一个三位数是不是水仙花数。例如 153,1³ + 5³ + 3³ = 153。核心就是拆出百位、十位、个位,然后计算立方和。
这道题在考什么? 一方面考数字位运算,另一方面考 for 循环的变体——其实这里我们不需要循环,因为只有三位。但如果你想通用化(比如判断任意位数),就会用到 for 循环遍历数字字符串。
最清晰的做法是把这个数转成字符串,遍历每一位字符,再转回整数立方求和:
num = 153
s = str(num)
total = 0
for ch in s:
total += int(ch) ** 3
if total == num:
print("yes")
else:
print("no")
看,for ch in s 正是我们刚才学的“遍历序列”——字符串也是一个序列,每个字符就是一个元素。这比手动取模除10要直观得多。如果题目让你扩展成判断任意位数的“自幂数”,这个思路直接就能套。
题目实战:整除问题 → 区间遍历
另一个题目:输入三个正整数 min、max 和 factor,输出 min 到 max 之间所有能被 factor 整除的数。这简直就是 for 循环 + range 的天然应用:
min_val, max_val, factor = map(int, input().split())
for num in range(min_val, max_val + 1):
if num % factor == 0:
print(num, end=' ')
注意 range(min_val, max_val + 1) 才能包含右边界。这个题考察的就是用 range 生成连续整数范围,配合条件筛选输出。没有 for 循环,你想挨个检查?那代码量会翻好几倍。
选择题与输出题:细节决定成败
有个题目问:以下哪个代码片段能正确遍历列表 ['苹果', '香蕉', '橘子']?
常见错误选项可能会写成 for i in range(len(列表)) 然后通过索引访问,这没错,但直接 for item in 列表 更简单更 Pythonic。所以正确答案是直接遍历元素本身。
还有一个输出题:执行 for i in range(5): print(i, end=' ') 会输出什么?end=' ' 让每个数字后面跟空格而不是换行,所以结果是 0 1 2 3 4 (注意最后一个数字后面也有空格)。很多人会误以为从1开始,其实 range(5) 是从 0 到 4。这个细节是新手最常见的坑,也是面试爱考的点。
小结与进阶
for 循环的威力在于把重复操作封装成一次遍历,让代码更短、更清晰、更不容易出错。学完基础之后,你可以往两个方向延伸:
- 与
if配合实现条件过滤——比如刚才的整除问题,或者“只处理偶数”“跳过某个值”等。 - 嵌套
for循环——处理矩阵、表格、或者两层遍历(比如打印乘法表)。
真正理解 for 循环,不是记住语法,而是建立“遍历思维”:遇到一堆同类东西需要做相同操作,第一反应就是 for。别手动,让电脑替你跑。