循环结构
for循环
for 循环用于遍历序列(列表、元组、字符串、字典、集合)或任何可迭代对象:
# 遍历列表
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
# 遍历字符串
for char in "Hello":
print(char, end=" ")
# 输出: H e l l o
range函数
range() 函数生成数字序列,常与 for 循环配合使用:
# range(stop) - 从0到stop-1
for i in range(5):
print(i, end=" ")
# 输出: 0 1 2 3 4
# range(start, stop) - 从start到stop-1
for i in range(1, 6):
print(i, end=" ")
# 输出: 1 2 3 4 5
# range(start, stop, step) - 指定步长
for i in range(0, 10, 2):
print(i, end=" ")
# 输出: 0 2 4 6 8
# 倒序
for i in range(10, 0, -1):
print(i, end=" ")
# 输出: 10 9 8 7 6 5 4 3 2 1
enumerate函数
enumerate() 在遍历时同时获取索引和值:
colors = ["红", "绿", "蓝"]
# 传统方式
for i in range(len(colors)):
print(f"{i}: {colors[i]}")
# 使用enumerate(推荐)
for index, color in enumerate(colors):
print(f"{index}: {color}")
# 指定起始索引
for index, color in enumerate(colors, start=1):
print(f"第{index}种颜色: {color}")
while循环
while 循环在条件为True时重复执行:
# 基本while循环
count = 0
while count < 5:
print(count, end=" ")
count += 1
# 输出: 0 1 2 3 4
注意:确保循环条件最终会变为False,否则会无限循环。
# 危险:无限循环
# while True:
# print("永远执行")
# 安全示例:猜数字
import random
target = random.randint(1, 100)
guess = 0
attempts = 0
while guess != target:
guess = int(input("猜一个1-100的数字: "))
attempts += 1
if guess < target:
print("太小了")
elif guess > target:
print("太大了")
print(f"恭喜!猜了{attempts}次")
break和continue
break - 终止循环
# 查找第一个偶数
numbers = [1, 3, 5, 8, 9, 10]
for num in numbers:
if num % 2 == 0:
print(f"找到第一个偶数: {num}")
break
# 输出: 找到第一个偶数: 8
continue - 跳过本次迭代
# 只打印奇数
for i in range(10):
if i % 2 == 0:
continue # 跳过偶数
print(i, end=" ")
# 输出: 1 3 5 7 9
for-else和while-else
Python的循环可以有 else 子句,在循环正常结束(非break)时执行:
# 搜索质数
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
break
else: # 循环正常结束,没找到因子
return True
return False
print(is_prime(17)) # True
print(is_prime(15)) # False
嵌套循环
# 打印乘法口诀表
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}×{i}={i*j}", end="\t")
print() # 换行
列表推导式
列表推导式提供了创建列表的简洁方式:
# 传统for循环
squares = []
for x in range(10):
squares.append(x ** 2)
# 列表推导式
squares = [x ** 2 for x in range(10)]
# 带条件的推导式
even_squares = [x ** 2 for x in range(10) if x % 2 == 0]
# 嵌套推导式
matrix = [[i * j for j in range(1, 4)] for i in range(1, 4)]
# [[1, 2, 3], [2, 4, 6], [3, 6, 9]]
常见循环模式
累加求和
total = 0
for i in range(1, 101):
total += i
print(f"1到100的和: {total}") # 5050
# 使用sum函数
total = sum(range(1, 101))
查找最大/最小值
numbers = [23, 45, 12, 67, 34, 89, 56]
max_val = numbers[0]
for num in numbers:
if num > max_val:
max_val = num
print(f"最大值: {max_val}") # 89
# 使用内置函数
print(max(numbers)) # 89
print(min(numbers)) # 12
过滤数据
scores = [85, 92, 78, 95, 60, 88, 73]
# 找出不及格的分数
failed = [score for score in scores if score < 60]
# 找出优秀成绩
excellent = [score for score in scores if score >= 90]
总结
循环是程序重复执行任务的基础结构。掌握 for 和 while 循环、break/continue 控制语句以及列表推导式后,你就能高效处理批量数据。下一节我们将学习列表——Python中最常用的数据结构之一。