一、条件语句
🧠 条件判断:让程序"智能"起来
🔄 从顺序执行到条件分支
核心转变:程序不再只是从上到下顺序执行
类比:就像走到十字路口,需要根据情况选择方向(左转、右转、直行)
实现方式:使用
if语句进行条件判断
📝 if语句基础结构
基本语法
if x < 10: # 条件:x小于10吗? print('Smaller') # 条件为True时执行 # 条件为False时跳过关键元素解析
| 元素 | 作用 | 示例 |
|---|---|---|
if | 条件判断开始 | if x > 0: |
条件 | 布尔表达式(返回True/False) | x > 0,age == 18 |
: | 表示代码块开始 | if x > 0: |
| 缩进 | 定义代码块范围 | 4个空格缩进 |
| 代码块 | 条件满足时执行的语句 | print('x is positive') |
🔣 比较运算符详解
赋值 vs 比较
# 赋值运算符:= x = 10 # 把10赋值给变量x # 比较运算符:== if x == 10: # 判断x是否等于10 print("x等于10")完整比较运算符表
| 运算符 | 描述 | 示例 | 结果 |
|---|---|---|---|
== | 等于 | 5 == 5 | True |
!= | 不等于 | 5 != 3 | True |
< | 小于 | 3 < 5 | True |
> | 大于 | 5 > 3 | True |
<= | 小于等于 | 3 <= 3 | True |
>= | 大于等于 | 5 >= 3 | True |
使用示例
x = 5 y = 10 if x < y: print("x小于y") if x == 5: print("x等于5") if y != 0: print("y不等于0")🔲 Python缩进机制详解
缩进的重要性
Python特色:用缩进定义代码结构,而不是花括号
{}代码块标识:相同缩进级别的代码属于同一个代码块
语法强制:正确的缩进是Python语法的要求
正确示例
# 正确的缩进:4个空格 if x > 0: print("x是正数") # 缩进4个空格 print("它的平方是:", x**2) # 缩进4个空格 print("这条语句总是执行") # 无缩进,不属于if代码块错误示例
# 错误的缩进:混用空格和Tab if x > 0: print("可能用空格") # 4个空格 print("可能用Tab") # 1个Tab(等价于8个空格?) # 会导致IndentationError⚠️ 重要提醒:Tab与空格
不要混用:Tab和空格不能混合使用
推荐做法:始终使用4个空格(大多数编辑器可设置Tab为4个空格)
配置建议:
在编辑器中设置"将Tab转换为空格"
使用一致的缩进设置
📊 代码结构可视化
1. 代码块划分
# 代码块1 if x > 10: # 代码块2(属于if) print("x大于10") if x > 20: # 代码块3(嵌套在代码块2中) print("x还大于20") # 回到代码块2 print("if语句结束") # 回到代码块1 print("程序结束")2. 嵌套结构示例
# 外层判断 if age >= 18: print("您是成年人") # 内层判断 if age >= 65: print("您可以享受老年人优惠") else: print("您是普通成年人") else: print("您是未成年人")3. 用流程图理解逻辑
# 对应流程图逻辑 temperature = 25 if temperature > 30: print("天气炎热") elif temperature > 20: # 20 < temperature <= 30 print("天气温暖") elif temperature > 10: # 10 < temperature <= 20 print("天气凉爽") else: # temperature <= 10 print("天气寒冷")↔️ 双向决策:if-else结构
基本语法
if 条件: # 条件为True时执行 代码块1 else: # 条件为False时执行 代码块2实际应用示例
# 示例1:判断奇偶 number = 7 if number % 2 == 0: print(f"{number}是偶数") else: print(f"{number}是奇数") # 示例2:成绩等级 score = 85 if score >= 60: print("及格") if score >= 90: # 嵌套if print("优秀!") else: print("不及格")多条件判断:if-elif-else
# 三个分支的选择 grade = 85 if grade >= 90: print("A") elif grade >= 80: # 80 <= grade < 90 print("B") elif grade >= 70: # 70 <= grade < 80 print("C") elif grade >= 60: # 60 <= grade < 70 print("D") else: # grade < 60 print("F")🎯 条件语句最佳实践
1. 保持代码清晰
# 清晰写法 is_weekend = True has_money = True if is_weekend and has_money: print("可以去购物") else: print("在家休息") # 避免过度嵌套 if condition1: if condition2: if condition3: # 三层嵌套,难以阅读 do_something()2. 使用括号提高可读性
# 复杂条件时使用括号 if (age >= 18 and age <= 60) or (has_special_permission): print("可以参加活动")3. 处理边界情况
# 总是考虑所有可能性 temperature = float(input("请输入温度: ")) if temperature > 100: print("水已沸腾") elif temperature <= 0: print("水已结冰") else: print("水是液态")4. 避免常见错误
# 错误:少了一个等号 if x = 5: # 应该是 x == 5 print("x是5") # 错误:忘记冒号 if x > 10 # 应该是 if x > 10: print("大于10") # 错误:缩进不一致 if x > 0: print("正数") # 4个空格 print("真的") # 5个空格,会报错!💡 实用技巧与模式
1. 三元运算符(简化if-else)
# 传统写法 if score >= 60: result = "及格" else: result = "不及格" # 三元运算符写法 result = "及格" if score >= 60 else "不及格"2. 条件表达式组合
# 使用and/or组合条件 age = 25 is_student = True if age >= 18 and age <= 30 and is_student: print("青年学生") # 检查多个可能值 color = "red" if color in ["red", "green", "blue"]: print("这是基本色")3. 空值检查模式
# 检查变量是否有值 name = input("请输入姓名: ") if name: # 如果name不是空字符串 print(f"你好,{name}") else: print("姓名不能为空")📋 调试条件语句
1. 打印条件值
x = 15 print(f"x的值: {x}") print(f"x > 10: {x > 10}") # 查看条件结果 if x > 10: print("条件为真")2. 逐步测试
# 先测试条件,再写完整代码 age = 18 print(age >= 18) # 应该输出True # 确认后再写if语句 if age >= 18: print("可以投票")3. 使用调试器
# 在编辑器中设置断点 # 逐步执行查看条件判断过程💎 核心要点总结
if语句结构:
if 条件:+ 缩进代码块比较运算符:分清
=(赋值)和==(等于)缩进规则:使用4个空格,不要混用Tab和空格
代码块概念:相同缩进级别的代码属于同一个代码块
分支结构:
if:单分支if-else:双分支if-elif-else:多分支
嵌套结构:if中可以包含另一个if,注意缩进层级
条件表达式:结果是True或False的表达式
编程思维:条件语句让程序具备了基本的"决策能力"。就像生活中的选择,程序也需要根据不同的情况做出不同的反应。掌握条件判断是编写智能程序的第一步!
二、更多条件语句
🎯 条件语句:多分支决策
🔤 elif 关键字
含义:
else if的缩写作用:在多个条件之间进行选择
结构:
if→elif→elif→ ... →else
📊 多条件结构示例
# 基础结构 if 条件1: # 条件1为True时执行 elif 条件2: # 条件2为True时执行 elif 条件3: # 条件3为True时执行 else: # 所有条件都为False时执行🔄 执行流程详解
关键特性:互斥执行
# 示例1:温度判断 temperature = 25 if temperature > 30: print("炎热") elif temperature > 20: # 20 < temperature ≤ 30 print("温暖") elif temperature > 10: # 10 < temperature ≤ 20 print("凉爽") else: # temperature ≤ 10 print("寒冷") # 一旦某个条件为True,执行相应代码块后直接跳过整个条件结构⚠️ 常见错误分析
# 错误示例1:重叠条件 x = 5 if x < 10: print("小于10") elif x < 20: # 这行永远不会执行到x=6的情况 print("小于20") # 因为x=6时已被第一个if捕获 # 错误示例2:冗余条件 x = 15 if x < 10: print("小于10") elif x >= 10 and x < 20: # x>=10已经是多余的 print("10到20之间") # 直接用 elif x < 20: # 正确示例:互斥条件 x = 25 if x < 10: print("小于10") elif x < 20: # 隐含 x >= 10 print("10到20之间") elif x < 30: # 隐含 x >= 20 print("20到30之间") else: # x >= 30 print("大于等于30")🖼️ 代码可视化:流程图
📈 流程图元素与对应代码
开始 → 条件判断 → True → 执行代码块 → 结束
↓
False
↓
下一条件/结束
实例对比:流程图 vs 代码
# 流程图表示的决策逻辑 """ 开始 ↓ x是否小于2? / \ 真 假 ↓ ↓ 输出"小于2" x是否小于10? / \ 真 假 ↓ ↓ 输出"小于10" 输出"大于等于10" """ # 对应代码 x = 5 if x < 2: print("小于2") elif x < 10: # 隐含 x >= 2 print("小于10") else: # x >= 10 print("大于等于10")🛡️ 异常处理:try-except
🔧 基本语法
try: # 尝试执行的代码 可能出错的代码 except: # 出错时执行的代码 错误处理代码💡 核心概念:保险策略
try块:正常执行的代码,可能存在风险
except块:错误发生时的备用方案
执行流程:
先执行try块中的代码
如果一切正常,跳过except块
如果发生异常,立即跳转到except块
📝 实际应用示例
# 示例1:处理除零错误 try: x = 10 / 0 print(f"结果是: {x}") except: print("错误:除数不能为零!") # 示例2:处理类型转换错误 user_input = input("请输入一个数字: ") try: number = float(user_input) print(f"您输入的数字是: {number}") except: print("错误:请输入有效的数字!") # 示例3:处理文件操作错误 try: with open("不存在的文件.txt", "r") as file: content = file.read() except: print("错误:文件不存在或无法读取!")🔍 条件语句与异常处理的结合
🎨 综合应用模式
# 模式1:先验证,再处理 user_input = input("请输入年龄: ") try: age = int(user_input) if age < 0: print("错误:年龄不能为负数!") elif age < 18: print("您是未成年人") elif age < 65: print("您是成年人") else: print("您是老年人") except ValueError: print("错误:请输入有效的整数!") except: print("发生了未知错误!") # 模式2:分级异常处理 try: # 尝试获取用户输入并计算 x = float(input("请输入被除数: ")) y = float(input("请输入除数: ")) if y == 0: print("警告:除数不能为零,使用默认值1") y = 1 result = x / y print(f"计算结果: {result}") except ValueError: print("错误:请输入有效的数字!") except KeyboardInterrupt: print("\n用户中断了程序") except Exception as e: print(f"发生未知错误: {e}")⚠️ 重要注意事项
1. 条件语句的执行顺序
# 顺序很重要:条件从上到下检查 score = 85 if score >= 90: grade = "A" elif score >= 80: # 只有在score<90时才会检查 grade = "B" # score=85会得到B elif score >= 70: # 只有在score<80时才会检查 grade = "C" else: grade = "F"2. 异常的捕获粒度
# 不推荐:捕获所有异常,难以调试 try: # 复杂操作 pass except: print("出错了") # 不知道具体什么错 # 推荐:捕获特定异常 try: # 复杂操作 pass except ValueError as e: print(f"值错误: {e}") except FileNotFoundError as e: print(f"文件未找到: {e}") except Exception as e: print(f"其他错误: {e}")3. 条件覆盖的完整性
# 确保覆盖所有可能情况 age = 25 if age < 18: print("未成年人") elif age >= 18: # 明确写出条件,更清晰 print("成年人") # else: # 如果没有else,确保条件已覆盖所有情况 # print("其他") # 使用assert进行验证 assert age >= 0, "年龄不能为负数"🛠️ 调试技巧
1. 条件测试
# 单独测试条件 x = 5 print(f"x < 2: {x < 2}") # False print(f"x < 10: {x < 10}") # True # 然后整合到if语句 if x < 2: print("小于2") elif x < 10: print("小于10") # 会执行这个 else: print("大于等于10")2. 异常调试
# 使用详细异常信息 import traceback try: risky_operation() except Exception as e: print(f"错误类型: {type(e).__name__}") print(f"错误信息: {e}") traceback.print_exc() # 打印完整堆栈跟踪3. 流程图绘制
# 用注释绘制简单流程图 """ 开始 ↓ 输入分数 ↓ 分数>=90? → 是 → 输出"A" → 结束 ↓否 分数>=80? → 是 → 输出"B" → 结束 ↓否 分数>=70? → 是 → 输出"C" → 结束 ↓否 输出"F" ↓ 结束 """💎 核心要点总结
条件语句
if-elif-else结构:实现多分支选择
互斥执行:一旦某个条件为True,跳过后续所有条件
条件顺序:从上到下检查,合理安排条件顺序
完整覆盖:确保所有可能情况都被处理
异常处理
try-except机制:预防性编程,优雅处理错误
保险策略:正常流程在try中,异常流程在except中
错误恢复:给程序"第二次机会",而不是直接崩溃
调试辅助:提供清晰的错误信息,便于定位问题
可视化思维
流程图:帮助理解和设计复杂逻辑
执行路径:清晰展示不同条件下的代码流向
条件嵌套:通过缩进和可视化理解多层判断
编程思维:优秀的程序员不仅写出能工作的代码,更写出能妥善处理各种意外情况的健壮代码。条件判断让程序智能化,异常处理让程序稳定化。记住:用户的输入是不可预测的,文件可能不存在,网络可能断开——好的程序应该优雅地处理所有这些情况!