别再用复制粘贴折磨自己了:Python for 循环让你一键搞定重复苦力活
你有没有过这种经历?老师让全班每人发一本练习册,你抱着厚厚一摞,一边数人头一边机械地重复“给小明、给小红、给小刚……”——发完手酸,脑子也空了。其实这种“挨个处理同一件事”的场景,简直是编程最擅长的事。而 Python 里专门干这活的,就是 for 循环。它就像一个不知疲倦的自动派发机器人,替你按顺序把队列里的每个东西处理一遍,且永远不会喊累。
排队发东西,本质就是 for 循环
想象你面前排着一队朋友:小明、小红、小刚。你要对每个人说一句“你好”。用 Python 写出来就是:
friends = ["小明", "小红", "小刚"]
for friend in friends:
print("你好," + friend)
运行结果:
你好,小明
你好,小红
你好,小刚
电脑瞬间帮你说了三次你好,每次自动替换名字。这就是 for 循环的核心:从第一个走到最后一个,对每个元素执行相同的操作。你不需要写三遍 print,只需要定义一次 action,剩下的交给循环。
for 循环的骨架:变量与序列
格式很简单:
for 变量 in 序列:
重复执行的代码
- 变量:临时容器,每次循环会从序列里取出一个元素放进去,名字你随便起(比如
friend、item),它就像排队时手里接过来的那个东西。 - 序列:存放元素的“筐”,可以是列表、字符串、元组,甚至是
range()生成的数字范围。
很多人刚开始搞不清“变量”这个名字为什么能变——其实它只是循环内部的一个临时标签,每次迭代都会被重新赋值。就像发练习册时,你手里的小本子一次只属于一个同学,发完就换下一个。
生活中的例子:包巧克力糖纸
你有一盒巧克力,每颗都要包上金色糖纸。用 for 循环描述:
chocolates = ["牛奶糖", "黑巧", "白巧"]
for chocolate in chocolates:
print(f"给 {chocolate} 包上金色糖纸")
输出:
给 牛奶糖 包上金色糖纸
给 黑巧 包上金色糖纸
给 白巧 包上金色糖纸
代码和生活中的动作一一对应,清晰得就像看说明书。
关键工具:range() 让你快速数数
用 for 循环数从 1 到 5,不用自己写 5 行 print:
for i in range(1, 6): # range(1,6) 生成 1,2,3,4,5
print(i)
range(start, stop) 生成一个整数序列,注意不包含 stop,所以 range(1,6) 只到 5。这就好比排队时的号码牌,从 1 号发到 5 号,6 号不在本队伍里。
下面这道题就完美展示了 range() 的用法:输入三个正整数 min、max 和 factor,输出区间内所有能被 factor 整除的数。典型场景:
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) 确保把区间两端都包含进去,然后用取模运算判断整除。这里 for 循环带着 range 就像一个侦察兵,把区间里的每个数都检查一遍。
顺便聊聊“水仙花数”——拆数字的经典
另一个常用 for 循环的场景是逐一取出数字的每一位。比如判断一个三位数是否是水仙花数(各位数字的立方和等于本身)。你先得把百位、十位、个位拆开:
num = input() # 注意输入是字符串
bai = int(num[0])
shi = int(num[1])
ge = int(num[2])
if bai**3 + shi**3 + ge**3 == int(num):
print("yes")
else:
print("no")
如果你要处理更多位,for 循环就能派上大用场:遍历字符串的每个字符,累加幂次。不过这道题只有三位,直接索引更直观。它考察的是“分解数字”的思维,而 for 循环正是这种“逐个处理每个元素”的利器。
下面这个选择题,几乎就是检验你对 for 遍历列表的理解:哪个代码片段能正确遍历 ['苹果', '香蕉', '橘子']?正确答案一定是 for item in list: 的形式,而不是 for i in range(len(list)) 那种绕弯的写法——注意区分“遍历元素”和“遍历索引”,Python 的设计哲学就是直接遍历元素更优雅。
再看这个输出题:for i in range(5): print(i, end=' '),结果是什么?0 1 2 3 4,因为 range(5) 默认从 0 开始,到 4 结束。这里有个小坑:很多人以为 range(5) 会输出 1 到 5,实际上它输出 0 到 4。记住 range(n) 生成 0 到 n-1,就像排队时发号码牌从 0 号开始,习惯就好。
总结:for 循环是你的“自动化小兵”
for 循环让我最感慨的一点是:它把人类从机械重复中解放出来,让我们能把精力集中在“做什么”而不是“做多少遍”。你只要定义好“对每个元素做什么”,剩下的遍历、边界处理全部交给电脑。
进阶建议:
- 学完基础后,尝试用 for 循环嵌套处理二维列表(比如打印九九乘法表)。
- 理解
range()的 step 参数(range(1, 10, 2)可以跳着数)。 - 当处理大量数据时,学会用
break提前跳出循环,用continue跳过当前项。 - 最终,你会接触到列表推导式
[x**2 for x in range(10)],那是 for 循环的“语法糖”,写起来更简洁,但理解循环本身是前提。
关于作者
我是赵老师,持有 NOI 信息学奥赛教练证书,拥有 15 年以上的软件开发经验,从事信息学少儿编程教学已有 8 年时间。
这些年累计帮助 多名 学生通过编程特长升入自己心仪的目标学校。
如果你在编程学习上有任何疑问,欢迎联系我:18620372957(微信同号)