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#