← 返回首页
🔄

循环结构

📂 python ⏱ 3 min 471 words

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]

总结

循环是程序重复执行任务的基础结构。掌握 forwhile 循环、break/continue 控制语句以及列表推导式后,你就能高效处理批量数据。下一节我们将学习列表——Python中最常用的数据结构之一。