CC++ & Algorithm

for循环

中等0
语言版本:C++
概述:让程序重复做事,就像一遍遍地数数。

for循环:让计算机帮你自动重复

你有没有试过把一句话重复说10遍?或者从1数到100?如果每件事都要自己动手,会累坏的。在编程中,for循环就是让计算机帮你自动重复做事情的“小助手”。就像坐旋转木马:转一圈算一次,转完指定的圈数就自动停下。for循环能让你轻松地让计算机执行固定次数的任务,或者依次处理一个集合里的每个元素。


1. for循环的基本语法

for循环的写法很简单,就像给变量排队领号码:

for 变量 in 序列:
    要重复执行的代码

这里的“序列”可以是一串数字、一个列表、一个字符串等。每次循环,变量会从序列中取出一个值,然后执行缩进的代码块。当所有值都取完了,循环就结束。

举个例子:让计算机从1数到5。

for i in range(1, 6):          # 变量i依次取值1,2,3,4,5
    print("第", i, "次")       # 每次打印当前次数

运行结果:

第 1 次
第 2 次
第 3 次
第 4 次
第 5 次

? 关键点for后面的变量名可以自由起,但最好有意义,比如用i表示索引,用fruit表示水果。


2. range()——最常用的数字生成器

range()函数就像一台自动出票机,能生成一串有序的数字。它有三种常用用法:

用法说明例子生成序列
range(停止值)从0开始,到停止值-1结束range(5)0,1,2,3,4
range(起始, 停止)从起始值开始,到停止值-1结束range(2, 6)2,3,4,5
range(起始, 停止, 步长)可以跳着取数,步长可以是负数range(0, 10, 2)0,2,4,6,8

生活例子:小明每天存3元零花钱,想算一周存了多少?可以用range模拟每一天。

total = 0                         # 总钱数,初始为0
for day in range(1, 8):           # day从1到7,代表星期一到星期日
    total = total + 3             # 每天存3元
print("一周共存了", total, "元")  # 输出:一周共存了 21 元

注意range(1, 8)生成1,2,3,4,5,6,7(不包含8),对应7天。

用步长跳着数:比如打印1到10之间的奇数。

for odd in range(1, 11, 2):      # 步长2,依次得到1,3,5,7,9
    print(odd, end=" ")           # 输出:1 3 5 7 9

反向数:倒计时10秒。

for second in range(10, 0, -1):  # 从10开始,减到1为止
    print(second, "秒后发射")
print("? 发射!")

3. 遍历列表和字符串

除了数字,for循环还能直接“翻看”列表里的每样东西,或者“读出”字符串里的每个字符。

遍历列表——吃水果

假设你有一篮水果,想吃一遍,用for循环帮你一个个说出来。

fruits = ["苹果", "香蕉", "橘子"]   # 水果列表
for fruit in fruits:                # fruit每次取出一个水果
    print("我喜欢吃", fruit)        # 输出:我喜欢吃 苹果 等等

遍历字符串——拼出姓名

字符串是由一个个字符组成的序列,for可以逐个访问。

name = "小明"                       # 姓名
for ch in name:                     # ch依次是'小'和'明'
    print("字母:", ch)             # 输出:字母:小  字母:明

结合range和列表索引

如果想同时知道元素的位置和内容,可以借助range和索引。

scores = [85, 92, 78, 90]          # 四名学生的分数
for index in range(len(scores)):   # index从0到3
    print("第", index+1, "位同学得分:", scores[index])

4. 循环中的控制:break和continue

有时循环过程中需要提前结束或跳过某一次。break就像喊“停”,continue就像“跳过这一次,继续下一次”。

break——找到目标就停

比如在游戏中寻找宝物,只要找到了就停止搜索。

chests = ["木箱", "金箱", "空箱", "宝箱"]  # 宝箱列表
for chest in chests:
    if chest == "宝箱":                   # 如果遇到宝箱
        print("发现宝箱!")
        break                              # 立刻停止循环
    print("继续找...")                     # 只有不是宝箱时才打印
# 输出:继续找... 继续找... 继续找... 发现宝箱!

continue——跳过不需要的项

比如统计考试成绩,只计算及格(≥60)的分数。

scores = [45, 82, 67, 53, 91]          # 考试分数
total = 0
count = 0
for score in scores:
    if score < 60:                     # 不及格就不算
        continue                       # 跳到下一次循环
    total = total + score
    count = count + 1
print("及格平均分:", total / count)   # 输出:及格平均分:80.0

5. 嵌套循环——循环里面套循环

有时一个循环不够用,比如打印乘法表:外层循环控制行,内层循环控制列。

for i in range(1, 10):                # i: 1~9
    for j in range(1, i+1):           # j: 1~i
        print(i, "*", j, "=", i*j, end="\t")  # 制表符对齐
    print()                           # 每行结束后换行

运行结果(部分):

1 * 1 = 1	
2 * 1 = 2	2 * 2 = 4	
3 * 1 = 3	3 * 2 = 6	3 * 3 = 9	
...

生活例子:小明每天有3顿饭,每顿吃2个包子,用嵌套循环算出3天一共吃多少包子。

total = 0
for day in range(1, 4):              # 3天
    for meal in range(1, 4):         # 每天3顿饭
        total = total + 2            # 每顿2个包子
print("3天一共吃了", total, "个包子")  # 输出:18

6. 新手最容易犯的错误

❌ 忘记写冒号

for i in range(5)   # 少了冒号,语法错误
    print(i)

改正:在for语句末尾加英文冒号:

❌ 缩进错误

for i in range(3):
print(i)             # 没有缩进,属于循环外,只执行一次

改正:循环体必须缩进(通常4个空格或一个Tab),Python靠缩进区分代码块。

range边界搞反

想打印1到10,却写了range(1,10)——这样只到9,因为结束值不包含。

改正:要包含10,必须写range(1, 11)

❌ 循环内修改正在遍历的列表

items = ["a", "b", "c"]
for item in items:
    items.remove(item)   # 一边遍历一边删除,会跳过元素

建议:遍历列表的副本items[:],或者用列表推导式。

❌ 忘记变量名含义导致逻辑错误

for i in range(100):
    print(i)   # 想输出1~100,但i从0开始,少了一个数

改正:明确起始值,比如range(1, 101)


7. 完整可运行示例:计算班级平均分

下面是一个完整的程序,输入5位同学的成绩,用for循环计算平均分。

# 程序:计算班级平均分
scores = []                # 空列表,用于存放成绩
total_students = 5         # 学生人数

for student in range(1, total_students + 1):   # student 从1到5
    score = int(input("请输入第" + str(student) + "位同学的分数:"))
    scores.append(score)   # 把分数添加到列表

# 计算总分
sum_score = 0
for s in scores:           # 遍历每个分数
    sum_score = sum_score + s

average = sum_score / total_students
print("班级平均分是:", average)

运行示例

请输入第1位同学的分数:88
请输入第2位同学的分数:95
请输入第3位同学的分数:72
请输入第4位同学的分数:84
请输入第5位同学的分数:91
班级平均分是:86.0

8. 相关知识点指引

  • while循环:当不知道具体循环次数时,while更灵活,例如“直到用户输入正确为止”。
  • 列表推导式:一种简洁的for循环写法,比如[x**2 for x in range(5)]能快速生成平方列表。
  • enumerate()函数:同时获取索引和元素,for i, fruit in enumerate(fruits):
  • zip()函数:同时遍历多个列表,例如for name, score in zip(names, scores):
  • 循环中的else:当循环正常结束(没遇到break)时执行else块,可用于判断是否找到了目标。

掌握for循环,你就拥有了让计算机自动重复工作的“遥控器”。多写几个例子,比如打印日历、模拟抽奖、计算累加和,很快就能熟练运用了!

例题精讲

1单选题

在Python中,执行以下代码后,循环体共执行多少次? for i in range(5): print(i)

A4次
B5次
C6次
D0次
2单选题

以下代码的输出结果是? for i in range(1, 10, 2): print(i, end=' ')

A1 3 5 7 9
B1 2 3 4 5 6 7 8 9
C2 4 6 8
D0 2 4 6 8
3判断题

执行以下代码后,变量i的值是2。 for i in range(3): pass print(i)

4填空题
以下代码的功能是计算1到100(含)所有整数的和,请填写空白处。
total = 0
for i in range(1, 101):
    ___
5填空题
以下代码希望输出5次"Hello",请填写空白处。
for i in range(5):
    ___