当前位置:首页>python>Python语言基础:15_循环语句

Python语言基础:15_循环语句

  • 2026-10-11 06:40:54
Python语言基础:15_循环语句

循环就是让程序重复执行同一段代码,避免我们把相同的代码写几十上百遍。比如打印 1 到 100、遍历列表里的所有元素、批量处理数据,都要用到循环。

Python 里有两种核心循环:

  • while
     循环:满足条件就一直循环,适合「不知道具体循环多少次」的场景
  • for
     循环:按顺序遍历序列里的每一个元素,适合「知道循环次数 / 遍历容器」的场景,日常开发最常用

前置必记铁则

  1. 循环语句行尾必须加英文冒号 :
  2. 循环内部的代码必须缩进 4 个空格,同一层级缩进一致
  3. 循环会重复执行缩进内的所有代码,直到条件不成立 / 被强制跳出

一、while 循环

1. 基本语法

while 循环条件:    重复执行的代码1    重复执行的代码2

执行逻辑:

  1. 先判断条件是否成立(True/False)
  2. 成立 → 执行缩进内的所有代码,执行完回到第 1 步再次判断
  3. 不成立 → 结束循环,执行后面的代码

2. 基础示例:打印 1~5

# 1. 初始化计数器:从1开始i = 1# 2. 循环条件:i小于等于5就继续循环while i <= 5:    # 3. 循环体:要重复做的事    print(i)    # 4. 计数器自增:非常重要!否则会无限死循环    i = i + 1  # 也可以简写为 i += 1

运行结果:

12345

逐行解释执行过程

  1. 初始 i=1,判断 1<=5 成立 → 打印 1,i 变成 2
  2. i=2
    ,判断 2<=5 成立 → 打印 2,i 变成 3
  3. 重复直到 i=6,判断 6<=5 不成立 → 循环结束

⚠️ 新手头号大坑:忘记写计数器自增 如果漏掉 i += 1,i 永远是 1,条件永远成立,程序会无限循环卡死。遇到死循环按 Ctrl+C 强制终止。

3. 死循环(特殊场景使用)

条件永远为 True,循环永远不会自己结束,需要配合break手动跳出。

# 死循环,需要手动break才能退出while True:    content = input("请输入内容(输入q退出):")    if content == "q":        break  # 输入q就跳出循环    print("你输入的是:", content)

适用场景:持续接收用户输入、程序后台持续运行等。

4. while 循环适用场景

  • 不知道具体要循环多少次,靠条件控制结束
  • 需要持续监听、持续运行的场景

二、for 循环(日常开发最常用)

for 循环用来遍历序列中的每一个元素,比如字符串、列表、元组、字典、range 生成的数字序列等,循环次数由序列的元素个数决定。

1. 基本语法

for 变量 in 序列:    循环体代码

执行逻辑:依次把序列里的每个元素赋值给变量,每赋值一次,执行一次循环体。

2. 基础示例:遍历字符串

word = "Python"for char in word:    print("当前字符:", char)

运行结果:

当前字符: P当前字符: y当前字符: t当前字符: h当前字符: o当前字符: n

3. 核心工具:range () 生成数字序列

range() 用来生成连续的整数序列,是 for 循环最常用的搭档,专门用来控制循环次数。

三种写法

① range (结束值):生成 0 ~ 结束值 - 1 的整数

左闭右开规则:包含起始值,不包含结束值。

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

输出:

01234

② range (起始值,结束值):生成 起始值~结束值 - 1 的整数

# 生成 1,2,3,...,10for i in range(1, 11):    print(i)

想打印 1 到 10,结束值必须写 11,因为不包含结束值本身。

③ range (起始值,结束值,步长):间隔指定步长取值

# 生成 1,3,5,7,9 (步长为2)for i in range(1, 10, 2):    print(i)

步长为负数还能倒序生成:

# 倒序打印 5,4,3,2,1for i in range(5, 0, -1):    print(i)

4. for 遍历常见容器

① 遍历列表

fruits = ["苹果", "香蕉", "橙子", "西瓜"]for fruit in fruits:    print(f"我喜欢吃{fruit}")

② 遍历字典

遍历字典默认遍历的是键(key),想同时取键和值用 items()。

student = {"name": "小明", "age": 18, "score": 95}# 方式1:遍历键for key in student:    print(key, "→", student[key])# 方式2:同时遍历键和值(最常用)for key, value in student.items():    print(key, "→", value)

③ 带下标遍历:enumerate ()

同时拿到元素的索引和值:

fruits = ["苹果", "香蕉", "橙子"]for index, fruit in enumerate(fruits):    print(f"第{index+1}个水果:{fruit}")

输出:

第1个水果:苹果第2个水果:香蕉第3个水果:橙子

三、循环控制关键字:break 和 continue

用来在循环内部手动控制循环的执行,两种循环都通用。

1. break:彻底跳出整个循环

一旦执行break,当前整个循环直接结束,后面的循环都不再执行。

示例:找到第一个符合条件的元素就停止

# 在列表里找数字3,找到就停止nums = [1, 2, 3, 4, 5]for num in nums:    if num == 3:        print("找到3了,停止循环")        break    print("当前数字:", num)

运行结果:

当前数字: 1当前数字: 2找到3了,停止循环

到数字 3 的时候触发 break,整个循环直接结束,4 和 5 都不会再遍历。

2. continue:跳过本次循环,进入下一次

执行continue后,本次循环剩下的代码跳过,直接进入下一轮循环。

示例:遇到偶数就跳过,只打印奇数

for i in range(1, 6):    if i % 2 == 0:        continue  # 偶数就跳过,不执行下面的print    print(i)

运行结果:

135

遇到 2、4 的时候,触发 continue,直接跳过打印,进入下一轮。

3. break 和 continue 核心区别

  • break:终止整个循环,循环彻底结束
  • continue:跳过本次循环,下一轮循环继续

💡 注意:在嵌套循环中,break/continue 只作用于当前所在的那一层循环,不会跳出外层循环。


四、循环的 else 子句(新手容易忽略)

Python 的循环可以搭配 else 使用,规则是:

  • 循环正常结束(没有被 break 打断),就执行 else 里的代码
  • 循环被break强制跳出,else 里的代码不会执行

示例:找元素,没找到就提示

nums = [1, 2, 3, 4, 5]target = 6  # 要找的数字for num in nums:    if num == target:        print("找到目标了")        breakelse:    # 循环正常走完,没触发break,说明没找到    print("列表里没有这个数字")

运行结果:列表里没有这个数字

如果把 target 改成 3,循环会被 break 打断,else 里的内容就不会执行。


五、嵌套循环

循环里面再套循环,就是嵌套循环。外层循环执行一次,内层循环执行完整的一轮。

1. 基础语法

for i in 外层序列:    外层代码    for j in 内层序列:        内层代码

2. 经典案例:打印九九乘法表

# 外层循环控制行数:1到9行for i in range(1, 10):    # 内层循环控制每行的式子:第i行有i个式子    for j in range(1, i+1):        # end="" 表示打印完不换行,用空格隔开        print(f"{j}×{i}={i*j}", end=" ")    # 一行打印完,换行    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 ... 9×9=81 

执行逻辑说明

  • 外层 i=1 时,内层 j 从 1 到 1,打印 1 个式子,换行
  • 外层 i=2 时,内层 j 从 1 到 2,打印 2 个式子,换行
  • 以此类推,外层一共循环 9 次,内层每次循环 i 次

💡 新手建议:嵌套层数尽量不要超过 3 层,太多层会非常难读,也容易出 bug。


六、综合实战案例

案例 1:计算 1~100 的累加和

total = 0for i in range(1, 101):    total += iprint("1到100的和是:", total)

结果:1到100的和是: 5050

案例 2:统计列表里的及格人数

scores = [85, 59, 92, 76, 45, 88, 60]count = 0  # 计数器for score in scores:    if score >= 60:        count += 1print(f"及格人数:{count} 人")

结果:及格人数:5 人

案例 3:猜数字小游戏

import randomanswer = random.randint(1, 100)  # 随机生成1-100的答案count = 0while True:    guess = int(input("请猜一个1-100的数字:"))    count += 1    if guess > answer:        print("猜大了,再小一点")    elif guess < answer:        print("猜小了,再大一点")    else:        print(f"恭喜你猜对了!答案就是{answer},一共猜了{count}次")        break

七、新手高频易错点总结

  1. while 循环忘记计数器自增
    :导致死循环,必须在循环体内修改条件变量
  2. 缩进混乱
    :循环体必须缩进,同一层级缩进必须一致
  3. range 范围搞错
    :左闭右开,range(5)是 0 到 4,不是 0 到 5
  4. break 和 continue 搞混
    :break 终止整个循环,continue 只跳本次
  5. 嵌套循环层级混乱
    :外层执行一次,内层执行完整一轮,注意变量不要重名
  6. 循环里修改正在遍历的列表
    :遍历列表时不要随便增删元素,容易导致索引错乱
  7. 冒号漏掉
    :while、for 行尾必须加英文冒号

最新文章

随机文章