柏虎资源网

专注编程学习,Python、Java、C++ 教程、案例及资源

30天学会Python编程:5. Python流程控制

5.1 流程控制概述

5.1.1 控制结构分类

Python流程控制主要分为三种基本结构:

5.1.2 控制结构基本概念

表5-1 流程控制基本概念

概念

描述

对应关键字

条件执行

根据条件选择执行路径

if, elif, else

循环

重复执行代码块

while, for

循环控制

改变循环正常流程

break, continue

异常处理

处理程序运行时错误

try, except, finally

5.2 条件语句(if)

5.2.1 if语句基本结构

语法原型

if condition1:
    # 代码块1
elif condition2:
    # 代码块2
else:
    # 代码块3

执行流程图

5.2.2 条件表达式

三元运算符形式

value = true_value if condition else false_value

应用示例

age = 20
status = "成年" if age >= 18 else "未成年"
print(f"年龄{age}:{status}")

5.2.3 条件判断技巧

多条件组合

# 检查分数等级
score = 85
if 90 <= score <= 100:
    grade = "A"
elif 80 <= score < 90:
    grade = "B"
else:
    grade = "C"

使用any()/all()

conditions = [False, True, True]
if any(conditions):  # 任意为真
    print("至少一个条件满足")
if all(conditions):  # 全部为真
    print("所有条件都满足")

5.3 循环结构

5.3.1 while循环

语法原型

while condition:
    # 循环体
else:
    # 正常结束循环时执行(非break退出)

典型应用

# 猜数字游戏
import random
target = random.randint(1, 100)
count = 0

while True:
    guess = int(input("猜数字(1-100): "))
    count += 1
    if guess == target:
        print(f"恭喜!猜了{count}次")
        break
    elif guess < target:
        print("猜小了")
    else:
        print("猜大了")

5.3.2 for循环

语法原型

for item in iterable:
    # 循环体
else:
    # 正常结束循环时执行

迭代对象示例

# 遍历字符串
for char in "Python":
    print(char, end=" ")
# 输出:P y t h o n

# 遍历字典
person = {"name": "Alice", "age": 25}
for key, value in person.items():
    print(f"{key}: {value}")

5.3.3 range对象

创建数值序列

range(start, stop, step)

实际应用

# 生成1-10的平方列表
squares = [x**2 for x in range(1, 11)]

# 反向遍历
for i in range(10, 0, -1):
    print(i, end=" ")
# 输出:10 9 8 7 6 5 4 3 2 1 

5.4 循环控制语句

5.4.1 break与continue

功能对比

实际应用

# 查找第一个3的倍数
numbers = [1, 5, 9, 2, 6, 4]
for num in numbers:
    if num % 3 == 0:
        print(f"找到第一个3的倍数: {num}")
        break

# 跳过奇数打印偶数
for i in range(10):
    if i % 2 != 0:
        continue
    print(i, end=" ")
# 输出:0 2 4 6 8

5.4.2 else子句

循环else特性

  • 当循环没有被break中断时执行
  • 适用于搜索场景

典型应用

# 检查质数
n = 13
for i in range(2, int(n**0.5)+1):
    if n % i == 0:
        print(f"{n}不是质数")
        break
else:
    print(f"{n}是质数")

5.5 异常处理

5.5.1 try-except结构

基本语法

try:
    # 可能出错的代码
except ExceptionType as e:
    # 异常处理
else:
    # 无异常时执行
finally:
    # 无论是否异常都执行

异常处理流程

5.5.2 常见异常类型

表5-2 Python常见异常类型

异常类型

触发场景

示例

ValueError

值错误

int("abc")

TypeError

类型错误

"a" + 1

IndexError

索引越界

[1,2][3]

KeyError

键不存在

{}["key"]

ZeroDivisionError

除零错误

1/0

FileNotFoundError

文件未找到

open("nonexist.txt")

5.5.3 自定义异常

class MyError(Exception):
    """自定义异常类"""
    def __init__(self, message):
        self.message = message

try:
    raise MyError("发生自定义错误")
except MyError as e:
    print(f"捕获到自定义异常: {e.message}")

5.6 综合应用

案例1:成绩评级系统

def grade_system():
    """根据分数自动评级"""
    while True:
        try:
            score = float(input("请输入成绩(0-100,q退出): "))
            if not 0 <= score <= 100:
                raise ValueError("成绩超出范围")
            
            if score >= 90:
                grade = "A"
            elif score >= 80:
                grade = "B"
            elif score >= 70:
                grade = "C"
            elif score >= 60:
                grade = "D"
            else:
                grade = "F"
            
            print(f"成绩评级: {grade}")
        
        except ValueError as e:
            if str(score).lower() == 'q':
                print("退出系统")
                break
            print(f"输入错误: {e}")
        except Exception as e:
            print(f"发生未知错误: {e}")

if __name__ == "__main__":
    grade_system()

案例2:素数生成器

def is_prime(n):
    """判断是否为素数"""
    if n < 2:
        return False
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    return True

def prime_generator(limit):
    """生成素数序列"""
    count = 0
    num = 2
    while count < limit:
        if is_prime(num):
            yield num
            count += 1
        num += 1

# 使用示例
print("前10个素数:")
for prime in prime_generator(10):
    print(prime, end=" ")
# 输出:2 3 5 7 11 13 17 19 23 29

5.7 学习路线图

5.8 学习总结

  1. 核心要点
  2. 掌握条件判断的各种形式
  3. 理解while和for循环的应用场景
  4. 熟练使用循环控制语句
  5. 正确处理程序异常
  6. 实践建议
  7. 避免过深的嵌套结构
  8. 循环中使用else处理正常结束情况
  9. 异常处理要具体化(避免裸except)
  10. 使用生成器优化内存消耗
  11. 进阶方向
  12. 上下文管理器(with语句)
  13. 协程与异步编程
  14. 迭代器协议实现
  15. 异常链与异常包装
  16. 常见陷阱
  17. 混淆赋值(=)和相等(==)
  18. 循环中修改迭代对象
  19. 异常处理掩盖真实错误
  20. 死循环问题(while True无退出条件)

持续更新Python编程学习日志与技巧,敬请关注!


#编程# #python# #在头条记录我的2025#


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言