第八章:循环语句
8.1 什么是循环语句?
循环语句就像 一个不知疲倦的机器人,能够重复执行相同的任务,直到满足特定条件才停止。它让程序能够自动化处理重复性工作,大大提高效率。
# 简单的循环示例
for i in range(5):
print(f"这是第{i+1}次循环")
8.2 for循环
8.2.1 基本的for循环
for循环用于遍历序列(如列表、字符串、元组等)中的每个元素:
语法格式
for 变量 in 序列:
# 循环体代码
# 示例:遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
# 示例:遍历字符串
text = "Hello"
for char in text:
print(char)
8.2.2 使用range()函数
range()函数生成一个数字序列,常用于控制循环次数:
# range()函数的三种用法
range(5) # 0, 1, 2, 3, 4
range(1, 6) # 1, 2, 3, 4, 5
range(1, 10, 2) # 1, 3, 5, 7, 9(步长为2)
# 实际应用
for i in range(5):
print(f"循环第{i+1}次")
for i in range(1, 6):
print(f"数字:{i}")
for i in range(0, 10, 2):
print(f"偶数:{i}")
8.2.3 使用enumerate()获取索引
在遍历序列时,如果需要同时获取索引和值,可以使用enumerate():
fruits = ["苹果", "香蕉", "橙子"]
# 同时获取索引和值
for index, fruit in enumerate(fruits):
print(f"第{index}个水果是:{fruit}")
# 可以指定起始索引
for index, fruit in enumerate(fruits, start=1):
print(f"第{index}个水果是:{fruit}")
8.3 while循环
8.3.1 基本的while循环
while循环在条件为真时重复执行代码块:
语法格式
while 条件:
# 循环体代码
# 示例
count = 1
while count <= 5:
print(f"计数:{count}")
count += 1 # 重要:必须更新条件变量,否则会无限循环
8.3.2 无限循环与退出条件
while循环特别适合处理不确定循环次数的情况:
# 用户输入直到特定值退出
total = 0
while True:
num = int(input("请输入数字(输入0退出):"))
if num == 0:
break #跳出
total += num
print(f"总和:{total}")
8.4 循环控制语句
8.4.1 break语句
break语句用于立即退出整个循环:
# 找到第一个满足条件的数字就退出
numbers = [1, 3, 5, 8, 10, 13, 15]
for num in numbers:
if num % 2 == 0:
print(f"找到第一个偶数:{num}")
break
else:
print("没有找到偶数")
8.4.2 continue语句
continue语句跳过当前循环的剩余代码,直接开始下一次循环:
# 只处理奇数,跳过偶数
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for num in numbers:
if num % 2 == 0:
continue # 跳过偶数
print(f"奇数:{num}")
8.4.3 else子句(本人不常用)
循环的else子句在循环正常完成(没有被break中断)时执行:
# for循环的else
for i in range(5):
print(i)
else:
print("循环正常结束")
# while循环的else
count = 0
while count < 3:
print(count)
count += 1
else:
print("while循环正常结束")
8.5 嵌套循环
循环内部可以包含另一个循环,形成嵌套结构:
# 打印乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}×{i}={i*j}", end="\t")
print() # 换行
# 处理二维数据
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for row in matrix:
for num in row:
print(num, end=" ")
print()
8.6 循环的注意事项
8.6.1 避免无限循环
# 危险的无限循环
# count = 0
# while count < 5: # 如果忘记更新count,就会无限循环
# print("无限循环...")
# 安全的写法
count = 0
while count < 5:
print(f"计数:{count}")
count += 1 # 确保更新条件变量
8.6.2 不要在循环中修改正在遍历的序列
# 危险的写法
numbers = [1, 2, 3, 4, 5]
# for num in numbers:
# if num % 2 == 0:
# numbers.remove(num) # 这会改变序列,导致意外结果
# 安全的写法:创建副本或使用列表推导式
numbers = [1, 2, 3, 4, 5]
numbers = [num for num in numbers if num % 2 != 0] # 只保留奇数
8.6.3 合理使用循环else子句
# else子句的典型用法:搜索场景
def find_number(numbers, target):
for i, num in enumerate(numbers):
if num == target:
print(f"找到目标数字,位置:{i}")
break
else:
print("没有找到目标数字")
numbers = [1, 3, 5, 7, 9]
find_number(numbers, 5) # 找到目标数字,位置:2
find_number(numbers, 4) # 没有找到目标数字
8.7 循环与函数结合
循环经常与函数结合使用,使代码更加模块化:
def calculate_statistics(numbers):
"""计算数字列表的统计信息"""
if not numbers:
return None
total = 0
count = 0
max_val = numbers[0]
min_val = numbers[0]
for num in numbers:
total += num
count += 1
if num > max_val:
max_val = num
if num < min_val:
min_val = num
average = total / count
return {
"总数": total,
"平均值": average,
"最大值": max_val,
"最小值": min_val
}
# 使用函数
data = [23, 45, 67, 12, 89, 34]
stats = calculate_statistics(data)
for key, value in stats.items():
print(f"{key}: {value}")
本章笔记:
- 循环语句让程序能够重复执行代码块,提高效率。
- for循环用于遍历序列或控制固定次数的循环。
- while循环在条件为真时重复执行,适合不确定循环次数的情况。
- break语句立即退出循环,continue语句跳过当前迭代。
- 循环可以嵌套使用,处理复杂的数据结构。
- 循环常用于数据统计、处理、用户交互等场景。
- 合理使用循环优化技巧可以提高代码性能。
- 注意避免无限循环和在循环中修改正在遍历的序列。
- 循环与函数结合可以使代码更加模块化和可重用。