首页 / 专栏 / python / python教程:循环语句深入全面讲解教程

python教程:循环语句深入全面讲解教程

  • 发布时间: 2026-03-12 09:07:46
  • 相关标签: python for while 循环语句
  • 简介: 循环是编程中实现**重复执行代码块**的核心语法,Python 提供了 `for` 和 `while` 两种核心循环结构,以及 `break`、`continue`、`else` 等辅助控制语句。本教程从基础到进阶,全面讲解循环的用法、场景和最佳实践。

一、循环的核心思想

循环的本质是**“满足条件时重复执行一段代码”**,就像生活中:

  • 重复数 1 到 10(已知次数)→ 用 for 循环
  • 重复喝水直到不渴(未知次数)→ 用 while 循环

所有循环都包含 3 个核心要素:

  1. 初始化:循环开始前的初始状态(如计数器 i = 0
  2. 条件判断:决定是否继续循环的规则(如 i < 10
  3. 更新:每次循环后改变状态(如 i += 1

二、for 循环(遍历循环)

for 循环是 Python 中最常用的循环,适用于已知循环次数遍历可迭代对象(列表、字符串、字典、range 等)的场景。

1. 基本语法

for 变量 in 可迭代对象:
    循环体代码(缩进!)
# 循环结束后执行的代码(无缩进)

2. 核心用法

(1)遍历序列(列表/字符串/元组)

# 遍历列表
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
    print(f"我喜欢吃 {fruit}")

# 遍历字符串
word = "Python"
for char in word:
    print(f"字符:{char}")

输出:

我喜欢吃 apple
我喜欢吃 banana
我喜欢吃 orange
字符:P
字符:y
字符:t
字符:h
字符:o
字符:n

(2)遍历数字范围(range 函数)

range() 是生成整数序列的核心工具,语法:

  • range(n):生成 0 到 n-1 的整数(如 range(3) → 0,1,2)
  • range(start, end):生成 start 到 end-1 的整数(如 range(1,4) → 1,2,3)
  • range(start, end, step):指定步长(如 range(0,10,2) → 0,2,4,6,8)
# 数 1 到 5
for i in range(1, 6):
    print(i)

# 倒序输出 10,8,6,4,2
for i in range(10, 0, -2):
    print(i)

(3)遍历字典

student = {"name": "小明", "age": 18, "score": 90}

# 遍历键
for key in student:
    print(f"键:{key},值:{student[key]}")

# 遍历键值对(推荐)
for k, v in student.items():
    print(f"{k} = {v}")

3. for 循环的 else 子句

Python 特有的语法:else 块会在循环正常结束(未被 break 中断)时执行。

# 示例:检查列表中是否有偶数
nums = [1, 3, 5, 7]
for num in nums:
    if num % 2 == 0:
        print("找到偶数")
        break
else:
    print("列表中无偶数")  # 会执行这行

三、while 循环(条件循环)

while 循环适用于未知循环次数的场景,只要条件为 True,就会持续执行。

1. 基本语法

初始化变量
while 条件表达式:
    循环体代码
    更新变量(避免死循环!)

2. 核心用法

(1)基础示例:数 1 到 5

i = 1  # 初始化
while i <= 5:  # 条件判断
    print(i)
    i += 1  # 更新(必须!否则死循环)

(2)未知次数循环:猜数字游戏

import random

target = random.randint(1, 10)  # 生成1-10的随机数
guess = 0

while guess != target:
    guess = int(input("猜一个1-10的数字:"))
    if guess > target:
        print("猜大了!")
    elif guess < target:
        print("猜小了!")
print(f"恭喜猜对了!数字是 {target}")

(3)while 循环的 else 子句

for 循环一样,else 块在循环正常结束时执行:

i = 1
while i <= 3:
    print(i)
    i += 1
else:
    print("循环正常结束")  # 会执行

3. 死循环(重点避坑)

如果 while 的条件永远为 True,且没有 break 中断,会导致死循环(程序卡死)。

# 错误示例(死循环)
# i = 1
# while i <= 5:
#     print(i)  # 没有 i += 1,i 永远是 1

# 正确写法:加 break 控制退出
while True:  # 故意写死循环
    user_input = input("输入 q 退出:")
    if user_input == "q":
        break  # 中断循环
    print(f"你输入了:{user_input}")

四、循环控制语句(break/continue/pass)

1. break:立即终止整个循环

# 遍历列表,找到 "banana" 就停止
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
    if fruit == "banana":
        print("找到香蕉,终止循环")
        break
    print(f"当前水果:{fruit}")

输出:

当前水果:apple
找到香蕉,终止循环

2. continue:跳过当前循环,直接进入下一次

# 打印 1-10 的奇数
for i in range(1, 11):
    if i % 2 == 0:
        continue  # 跳过偶数
    print(i)

3. pass:空语句(占位用)

pass 不做任何操作,仅用于语法上需要代码块但暂时不想写逻辑的场景:

for i in range(5):
    if i == 3:
        pass  # 暂时不处理 i=3 的情况
    else:
        print(i)

五、嵌套循环

循环内部嵌套另一个循环,适用于二维数据(如矩阵、表格)处理。

1. 基础示例:打印九九乘法表

# 外层循环控制行数
for i in range(1, 10):
    # 内层循环控制列数
    for j in range(1, i+1):
        print(f"{j}×{i}={i*j}", end="\t")  # end="\t" 不换行,用制表符分隔
    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	3×9=27	4×9=36	5×9=45	6×9=54	7×9=63	8×9=72	9×9=81

2. 嵌套循环的控制

break/continue 仅作用于当前所在的循环,如需终止外层循环,可使用标记变量:

# 找到 (2,3) 后终止外层循环
found = False
for i in range(1, 4):
    for j in range(1, 4):
        if i == 2 and j == 3:
            print(f"找到目标位置:({i},{j})")
            found = True
            break  # 终止内层循环
    if found:
        break  # 终止外层循环

六、循环的优化技巧

1. 尽量用 for 代替 while

for 循环更简洁、不易出错(无需手动更新计数器),优先使用。

2. 避免不必要的循环

  • 用内置函数(如 sum()max())代替手动循环计算:
    nums = [1,2,3,4,5]
    # 低效:手动循环求和
    total = 0
    for num in nums:
        total += num
    # 高效:用 sum() 内置函数
    total = sum(nums)
    

3. 迭代时避免修改原列表

遍历列表时修改原列表会导致遍历异常,可遍历副本:

nums = [1,2,3,4,5]
# 错误:遍历中删除元素,会跳过部分值
# for num in nums:
#     if num % 2 == 0:
#         nums.remove(num)

# 正确:遍历列表副本
for num in nums[:]:  # nums[:] 生成副本
    if num % 2 == 0:
        nums.remove(num)
print(nums)  # [1,3,5]

七、总结

关键点回顾

  1. for 循环:适用于已知次数/遍历可迭代对象(列表、range、字典等),Python 中优先使用。
  2. while 循环:适用于未知循环次数的场景,必须确保有退出条件(避免死循环)。
  3. 控制语句break 终止整个循环,continue 跳过当前次循环,else 子句在循环正常结束时执行。
  4. 嵌套循环:用于二维数据处理,break/continue 仅作用于当前循环。
  5. 优化原则:优先用内置函数代替手动循环,遍历列表时避免直接修改原列表。

同分类推荐