Skip to content

🔄 Python 控制流程

控制流程概述

控制流程是编程中的核心概念,它决定了程序执行的顺序和逻辑。Python 提供了多种控制流程结构:

  • 条件语句:根据条件决定执行哪些代码
  • 循环语句:重复执行某些代码
  • 异常处理:处理程序运行时的错误

🔀 条件语句

if 语句

python
# 基本 if 语句
age = 18
if age >= 18:
    print("你已经成年了")

# if-else 语句
score = 85
if score >= 60:
    print("及格了")
else:
    print("需要继续努力")

# if-elif-else 语句
temperature = 25
if temperature > 30:
    print("天气很热")
elif temperature > 20:
    print("天气温暖")
elif temperature > 10:
    print("天气凉爽")
else:
    print("天气寒冷")

嵌套条件

python
# 嵌套 if 语句
age = 20
has_license = True

if age >= 18:
    if has_license:
        print("可以开车")
    else:
        print("需要先考驾照")
else:
    print("年龄不够,不能开车")

条件表达式(三元运算符)

python
# 基本用法
age = 20
status = "成年" if age >= 18 else "未成年"
print(f"状态: {status}")

# 嵌套条件表达式
score = 85
grade = "优秀" if score >= 90 else "良好" if score >= 80 else "及格" if score >= 60 else "不及格"
print(f"等级: {grade}")

逻辑运算符

python
# and 运算符
age = 20
has_license = True
if age >= 18 and has_license:
    print("可以开车")

# or 运算符
weather = "晴天"
temperature = 25
if weather == "晴天" or temperature > 20:
    print("适合外出")

# not 运算符
is_weekend = False
if not is_weekend:
    print("今天是工作日")

# 复杂逻辑
score = 85
attendance = 0.9
if score >= 80 and attendance >= 0.8:
    print("可以获得奖学金")

🔁 循环语句

for 循环

基本 for 循环

python
# 遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
    print(f"我喜欢{fruit}")

# 遍历字符串
text = "Python"
for char in text:
    print(char)

# 遍历字典
student = {"name": "张三", "age": 20, "grade": "A"}
for key, value in student.items():
    print(f"{key}: {value}")

range() 函数

python
# 基本用法
for i in range(5):
    print(i)  # 0, 1, 2, 3, 4

# 指定起始和结束
for i in range(2, 8):
    print(i)  # 2, 3, 4, 5, 6, 7

# 指定步长
for i in range(0, 10, 2):
    print(i)  # 0, 2, 4, 6, 8

# 反向循环
for i in range(10, 0, -1):
    print(i)  # 10, 9, 8, 7, 6, 5, 4, 3, 2, 1

enumerate() 函数

python
# 获取索引和值
fruits = ["苹果", "香蕉", "橙子"]
for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")

# 指定起始索引
for index, fruit in enumerate(fruits, 1):
    print(f"第{index}个水果: {fruit}")

while 循环

python
# 基本 while 循环
count = 0
while count < 5:
    print(f"计数: {count}")
    count += 1

# 用户输入循环
while True:
    user_input = input("请输入一个数字(输入 'quit' 退出): ")
    if user_input == 'quit':
        break
    try:
        number = int(user_input)
        print(f"你输入的数字是: {number}")
    except ValueError:
        print("请输入有效的数字")

# 条件循环
password = ""
while password != "123456":
    password = input("请输入密码: ")
    if password != "123456":
        print("密码错误,请重试")
print("密码正确,欢迎!")

🚪 循环控制语句

break 语句

python
# 在循环中提前退出
for i in range(10):
    if i == 5:
        break
    print(i)  # 0, 1, 2, 3, 4

# 在 while 循环中使用
count = 0
while True:
    count += 1
    if count > 5:
        break
    print(f"计数: {count}")

continue 语句

python
# 跳过当前迭代
for i in range(10):
    if i % 2 == 0:
        continue  # 跳过偶数
    print(i)  # 1, 3, 5, 7, 9

# 在 while 循环中使用
count = 0
while count < 10:
    count += 1
    if count % 3 == 0:
        continue  # 跳过3的倍数
    print(f"计数: {count}")

else 子句

python
# for 循环的 else
for i in range(5):
    print(i)
else:
    print("循环正常结束")

# while 循环的 else
count = 0
while count < 3:
    print(f"计数: {count}")
    count += 1
else:
    print("while 循环正常结束")

# break 时不会执行 else
for i in range(5):
    if i == 3:
        break
    print(i)
else:
    print("这行不会执行")

🎯 嵌套循环

python
# 嵌套 for 循环
for i in range(3):
    for j in range(3):
        print(f"({i}, {j})")

# 打印乘法表
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]
]

target = 5
found = False
for i in range(len(matrix)):
    for j in range(len(matrix[i])):
        if matrix[i][j] == target:
            print(f"找到目标 {target} 在位置 ({i}, {j})")
            found = True
            break
    if found:
        break

📊 列表推导式

基本列表推导式

python
# 基本语法
squares = [x**2 for x in range(10)]
print(f"平方数: {squares}")

# 带条件的列表推导式
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(f"偶数的平方: {even_squares}")

# 字符串处理
words = ["hello", "world", "python"]
upper_words = [word.upper() for word in words]
print(f"大写单词: {upper_words}")

嵌套列表推导式

python
# 创建二维列表
matrix = [[i + j for j in range(3)] for i in range(3)]
print(f"矩阵: {matrix}")

# 展平二维列表
flattened = [item for row in matrix for item in row]
print(f"展平后: {flattened}")

🎲 实践练习

练习1:成绩等级判断

编写一个程序,根据分数判断等级:

  • 90分以上:优秀
  • 80-89分:良好
  • 70-79分:中等
  • 60-69分:及格
  • 60分以下:不及格

练习2:猜数字游戏

编写一个猜数字游戏:

  • 程序随机生成一个1-100的数字
  • 用户有7次机会猜测
  • 每次猜测后给出提示(太大/太小)
  • 猜中或次数用完时结束游戏

练习3:打印图案

使用循环打印以下图案:

*
**
***
****
*****

练习4:质数判断

编写一个函数判断一个数是否为质数,然后找出1-100之间的所有质数。

🔧 高级技巧

使用 zip() 函数

python
# 同时遍历多个列表
names = ["张三", "李四", "王五"]
ages = [20, 25, 30]
grades = ["A", "B", "A"]

for name, age, grade in zip(names, ages, grades):
    print(f"{name}: {age}岁, 等级{grade}")

使用 itertools 模块

python
import itertools

# 无限循环
counter = itertools.count(1)
for i in range(5):
    print(next(counter))  # 1, 2, 3, 4, 5

# 循环迭代
colors = ["红", "绿", "蓝"]
cycle_colors = itertools.cycle(colors)
for i in range(7):
    print(next(cycle_colors))  # 红, 绿, 蓝, 红, 绿, 蓝, 红

📈 性能优化建议

💡 优化技巧

  1. 使用列表推导式:比普通循环更高效
  2. 避免不必要的嵌套:减少循环层数
  3. 使用生成器:对于大数据集,使用生成器表达式
  4. 提前退出:使用 break 和 continue 减少不必要的计算
python
# 低效的写法
result = []
for i in range(1000):
    if i % 2 == 0:
        result.append(i**2)

# 高效的写法
result = [i**2 for i in range(1000) if i % 2 == 0]

下一步

现在你已经掌握了 Python 的控制流程,接下来学习:


💡 学习建议:多练习循环和条件语句的组合使用,这是编程的基础