Python基础 : 条件分支语句
一、知识点详解
1.1 基础语法结构
- 单条件判断(if):
if 条件:
# 条件为True时执行的代码
- 二选一分支(if-else):
if 条件:
# 条件为True时执行
else:
# 条件为False时执行
- 多条件分支(if-elif-else):
if 条件1:
# 条件1为True时执行
elif 条件2:
# 条件2为True时执行
else:
# 所有条件为False时执行
1.2 语法规则
- 缩进:条件满足后执行的代码必须缩进(通常4个空格或1个Tab)。
- 冒号
:
:每个条件后必须加冒号。 - 执行顺序:从上到下判断条件,一旦某个条件为True,执行对应代码块并结束判断。
1.3 嵌套条件
- 在代码块内嵌套另一个条件语句:
if 条件1:
if 条件2:
# 条件1和条件2均为True时执行
1.4 三元表达式
- 作用:用于简化简单条件判断。
- 语法:条件满足时执行的语句
if
判断条件else
条件不满足时执行的语句
num = 10
print("偶数" if num % 2 == 0 else "奇数")
二、说明示例
2.1 用户名密码验证
# 用户名密码验证示例
username = input("用户名:").strip()
password = input("密码:").strip()
if not username or not password:
print("用户名或密码不能为空")
else:
if username == "admin" and password == "123456":
print("登录成功")
else:
print("用户名或密码错误")
2.2 会员等级判断
# 会员等级判断示例
membership_level = "黄金" # 可替换为:普通/白银/黄金/钻石
if membership_level == "普通":
print("尊享普通会员特权:\n- 全场95折\n- 生日优惠券")
elif membership_level == "白银":
print("白银会员专属:\n- 全场9折\n- 每月免邮券")
elif membership_level == "黄金":
print("黄金会员特权:\n- 全场85折\n- 专属客服\n- 优先发货")
elif membership_level == "钻石":
print("钻石VIP服务:\n- 折上折(基础8折)\n- 线下活动邀请\n- 24小时专属顾问")
else:
print("无效会员等级,请联系客服")
2.3 嵌套条件及复杂逻辑判断(游戏挂机)
# 复杂逻辑判断示例
max_hp = 100 # 定义角色的最大生命值
max_mp = 100 # 定义角色的最大魔法值
current_hp = 50 # 定义角色的当前生命值
current_mp = 40 # 定义角色的当前魔法值
# 定义一个布尔变量,用于判断角色当前是否处于战斗中
is_in_battle = False
# 定义角色周围的怪物数量,用于判断战斗时的行动策略
monster_count = 3
# 计算当前生命值占最大生命值的百分比,结果以浮点数形式呈现
# 这里是自动类型提升的运用,还记得之前的数学运算符的知识点么?
hp_percentage = current_hp / max_hp * 100
# 计算当前魔法值占最大魔法值的百分比,结果以浮点数形式呈现
mp_percentage = current_mp / max_mp * 100
action = "保持警戒" # 行动策略初始默认值
# 综合状态判断
if hp_percentage <= 10:
# 超低HP时强制保命
action = "逃跑" if is_in_battle else "回城补给"
elif hp_percentage <= 30:
if is_in_battle:
# 战斗中优先使用瞬发药水
action = "使用治疗药剂"
else:
# 非战斗时双资源管理
if mp_percentage <= 30:
action = "使用HP药水+使用MP药水" if hp_percentage <= 20 else "使用MP药水"
else:
action = "使用HP药水"
else:
if mp_percentage <= 30:
# MP优先补给(HP处于安全范围时)
action = "使用MP药水"
elif is_in_battle:
# 战斗技能策略
action = "释放群攻技能" if monster_count > 2 else "释放单体技能"
else:
# 挂机逻辑
if monster_count > 2:
action = "原地挂机"
elif monster_count == 0:
action = "寻找怪物"
else:
action = "引更多怪"
# 输出最终的行动策略
print(f"执行动作: {action}")
# 建议手动修改各个相关变量的值,模拟不同的状态
三、知识点总结
- 核心语法:
if
、elif
、else
的分支逻辑,缩进决定代码归属。 - 编写要点:
- 条件顺序影响结果(如范围判断需从大到小排列)。
- 避免冗余条件(如
score >= 60 and score < 80
在elif
中可简化为score >= 60
)。
- 常见错误:
- 遗漏冒号
:
或缩进错误。 - 混淆赋值
=
和比较==
。
- 遗漏冒号
四、 扩展知识
4.1 条件表达式与短路评估
# 避免除零错误
divisor = 0
if divisor != 0 and 10 / divisor > 2:
print("条件满足")
else:
print("除数为 0 或结果不满足条件")
4.2 海象运算符
海象运算符 :=
是 Python 3.8 引入的一项新特性,也被称为赋值表达式。
- 作用:
:=
允许在表达式中同时完成变量赋值和条件判断,从而简化代码逻辑。 - 语法:
变量:=
表达式
海象表达式的语法非常简单,使用:=
替代传统的=
进行赋值 - 应用场景:
多用于条件判断中简化代码
,循环中动态更新变量
,推导式中避免重复计算
- 注意事项:
- 作用域限制: 变量仅在当前表达式的作用域内有效
- 优先级问题: 运算符优先级低于比较运算符,需用括号明确运算顺序
- 兼容性: 仅适用于 Python 3.8 及以上版本
- 常见错误:
- 误用为普通赋值: a := 5(单独使用会报错,必须嵌入表达式)
- 过度使用: 可能导致代码可读性下降,例如在复杂表达式中嵌套多个海象运算符
# 场景1:条件判断中使用海象运算符
data = 'abcdefghijklmn'
if (n := len(data)) > 10:
print(f"◆ 数据长度检查:字符长度 {n} 超过阈值\n")
# 场景2:循环输入中使用海象运算符(持续监听)
print("◆ 输入监听中(输入 exit 退出)")
while (user_input := input("请输入内容:")) != "exit":
print(f"接收到输入:{user_input}")
print("输入监听已结束\n")
# 场景3:列表推导式中使用海象运算符
def get_value(char):
# ord() 是一个内置函数,用于获取单个字符的 Unicode 码点(整数表示)
return ord(char) # 获取字符的ASCII码值
results = [y for x in data if (y := get_value(x)) > 100]
print(f"◆ ASCII码过滤结果:{results}(值大于100的字符)")
print(f"过滤掉的元素数目:{(len(data) - len(results))}")
五、知识点考察题
a = 5
b = 8
if result = (a > 0):
if a < b:
print("X")
elif a < 7 < b:
print("Y")
else:
print("Z")
运行以上Python代码的结果是什么( )
- A : 输出
X
- B : 输出
Y
- C : 输出
Z
- D :
报错
答案: D