CC++ & Algorithm

Python for 循环基础

简单10
语言版本:C++Python
概述:学会用for循环让电脑自动重复做事情,就像妈妈让你把书架上的每本书都拿出来翻一遍。

学会用Python的for循环,让电脑帮你自动重复做事情

同学们,你们有没有遇到过这样的情况:老师让你们给全班每个同学发一本练习册,你不想一个一个去数,希望有个“自动机器人”帮你挨个发?在Python里,for循环就是这样一个“自动机器人”,它可以帮我们按顺序处理每一个东西。

下面我们就来详细认识一下这位好帮手,看看它能帮我们做哪些有趣的事。


1. for循环是什么

for循环就像排队的队伍:你要从第一个到最后一个,依次做同一件事。比如,你要对每个朋友说“你好”,用代码写就是:

friends = ["小明", "小红", "小刚"]   # 定义一个列表,存三个好朋友的名字
for friend in friends:               # 让 friend 依次等于列表里的每个名字
    print("你好," + friend)          # 每次循环都执行这一句

运行结果:

你好,小明
你好,小红
你好,小刚

看看,电脑自动帮你说了三次“你好”,每次换一个朋友的名字。整个过程就是:从列表中取出第一个元素 → 执行缩进的代码 → 取出下一个元素 → 再执行……直到取完所有元素

除了列表,for循环还可以作用在很多其他东西上,比如字符串(每个字符)、元组、字典(键或值)等。例如:

word = "ABC"           # 一个字符串
for letter in word:    # 循环遍历每个字母
    print(letter)      # 输出 A, B, C 各一行

2. for循环的格式

基本格式像这样:

for 变量 in 序列:
    重复做的动作
  • 变量:临时存放当前拿到的那个东西,名字可以自己起(比如上面的 friendletter)。你可以理解为“每次循环手里拿着的那个小纸条”。
  • 序列:一筐东西,比如一个列表、一个字符串,或者用 range() 生成的数字范围。
  • 缩进for下面的语句必须缩进(一般是按一下Tab键或4个空格),缩进的部分才是循环要重复执行的内容。如果忘记缩进,Python会报错哦!

3. 用for循环数数

想从1数到5?不用自己写5行print,用for循环加 range()

for i in range(1, 6):  # range(1,6) 生成 1,2,3,4,5
    print(i)

输出:

1
2
3
4
5

range(1,6) 就像排队时拿到的号码牌,从1开始,到5结束(6不包含)。如果只写一个数字,比如 range(5),就会生成 0,1,2,3,4(从0开始,数量是5个)。这在处理索引时非常有用。

再比如,你想让计算机重复做10次某个动作(比如打印10个“哈”):

for times in range(10):       # times 依次取值 0 到 9
    print("哈")               # 打印10次“哈”

生活例子:妈妈想让你每天存1元钱零花钱,连续存7天,一共存了多少?可以用循环累加:

total = 0                             # 初始金额0元
for day in range(1, 8):              # day = 1,2,3,4,5,6,7
    total = total + 1                 # 每天存1元
    print(f"第{day}天存了1元,总金额:{total}元")

4. 生活中的更多例子

你有一盒巧克力,每颗都要包上糖纸。用for循环来描述:

chocolates = ["牛奶糖", "黑巧", "白巧"]   # 三种巧克力
for chocolate in chocolates:              # 遍历每一颗
    print(f"给 {chocolate} 包上金色糖纸")

输出:

给 牛奶糖 包上金色糖纸
给 黑巧 包上金色糖纸
给 白巧 包上金色糖纸

另一个例子:计算全班同学英语考试的平均分。假设分数列表是 [88, 92, 76, 85, 90]:

scores = [88, 92, 76, 85, 90]   # 五个同学的分数
total = 0                        # 总分初始0
count = 0                        # 人数初始0
for score in scores:             # 遍历每个分数
    total = total + score        # 累加分数
    count = count + 1            # 人数加1
average = total / count          # 计算平均分
print(f"总分:{total},平均分:{average}")

运行结果:

总分:431,平均分:86.2

你看看,如果让你手算5个数的平均值,用for循环几行代码就搞定了,而且分数再多也不怕。


5. 新手容易犯的错误

错误1:忘记加冒号
for i in range(5) 忘记写冒号 → for i in range(5) 少了个:,Python会报语法错误。
正确:for i in range(5):

错误2:缩进不对
for i in range(3): print(i) 这样写printfor对齐了,不在循环内,只会打印一次最后一次的值(或报错)。
正确:print(i)前面要有4个空格或一个Tab。

错误3:range的结束值搞混
range(1,5) 产生1,2,3,4,不包含5。很多同学以为包括5,结果少循环一次。记住:包左不包右

错误4:重复使用变量名
for item in items: 后面又写 item = 100,会改变循环中item的值,可能导致意外。尽量避免在循环内部重新赋值给循环变量。

错误5:在循环里修改正在遍历的列表
如果你在for循环中删除当前元素,可能会跳过一些元素。新手可以先不碰这个,等学了列表操作再留意。


6. 完整可运行的示例

下面是一个完整的程序:模拟给小猪存钱罐里存零花钱,每周存一次,一共存4周,每次存的钱可以不同(比如用列表记录每周存的钱),最后显示总共存了多少和平均每周存了多少。

# 每周存的钱(单位:元)
weekly_money = [5, 10, 8, 12]   # 第1周5元,第2周10元……

total_saved = 0                  # 总存款初始0
weeks = 0                        # 周数初始0

for money in weekly_money:       # 遍历每周存款
    total_saved = total_saved + money   # 累加总金额
    weeks = weeks + 1                   # 周数加1

average_saved = total_saved / weeks     # 计算平均每周存多少钱

print(f"一共存了{total_saved}元")                # 输出总存款
print(f"平均每周存{average_saved}元")            # 输出平均值

运行结果:

一共存了35元
平均每周存8.75元

你可以试着修改weekly_money的值,或者增加更多周,看看结果变化。


7. 相关指引

学会for循环之后,你可以继续学习:

  • while循环:另一种实现重复的方法,适合“直到满足某个条件才停止”的场景。
  • 列表操作:如何创建、添加、删除列表中的元素,和for循环搭配使用更强大。
  • 字符串遍历:用for循环逐个处理字符串中的字符,比如统计字母出现次数。
  • 嵌套循环:for循环里面再套一个for循环,可以用来处理表格、棋盘等二维数据。

总之,for循环是编程中最常用的“自动化”工具,掌握了它,你就能让电脑帮你做很多重复性工作啦!快去试试吧!

例题精讲

1单选题

以下哪个代码片段可以正确遍历列表['苹果', '香蕉', '橘子']中的每一个元素?

Afor 水果 in '苹果', '香蕉', '橘子':
Bfor 水果 in ['苹果', '香蕉', '橘子']:
Cfor 水果 in 苹果, 香蕉, 橘子:
Dfor 水果 in '苹果', '香蕉', '橘子' :
2单选题

执行以下代码后,输出的结果是?\nfor i in range(5):\n print(i, end=' ')

A0 1 2 3 4
B1 2 3 4 5
C0 1 2 3 4 5
D1 2 3 4
3判断题

在Python中,for循环结束后,循环变量(例如for i in range(5):中的i)在循环外仍然可以使用,它的值会是循环最后一次的值。

4填空题
请补全代码,使程序输出字符串'Python'中的每个字符,每个字符占一行。\ns = 'Python'\nfor ___ in s:\n    print(ch)
5填空题
请补全代码,使程序计算1到10(包括10)所有整数的和,并输出结果。\ntotal = 0\nfor i in range(1, 11):\n    ___\nprint(total)