一、条件语句
🧠 条件判断:让程序"智能"起来
🔄 从顺序执行到条件分支
-
核心转变:程序不再只是从上到下顺序执行
-
类比:就像走到十字路口,需要根据情况选择方向(左转、右转、直行)
-
实现方式:使用
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中
-
错误恢复:给程序"第二次机会",而不是直接崩溃
-
调试辅助:提供清晰的错误信息,便于定位问题
可视化思维
-
流程图:帮助理解和设计复杂逻辑
-
执行路径:清晰展示不同条件下的代码流向
-
条件嵌套:通过缩进和可视化理解多层判断
编程思维:优秀的程序员不仅写出能工作的代码,更写出能妥善处理各种意外情况的健壮代码。条件判断让程序智能化,异常处理让程序稳定化。记住:用户的输入是不可预测的,文件可能不存在,网络可能断开——好的程序应该优雅地处理所有这些情况!

被折叠的 条评论
为什么被折叠?



