Python基础 : 条件分支语句

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}")

# 建议手动修改各个相关变量的值,模拟不同的状态


三、知识点总结

  • 核心语法ifelifelse 的分支逻辑,缩进决定代码归属。
  • 编写要点
    • 条件顺序影响结果(如范围判断需从大到小排列)。
    • 避免冗余条件(如 score >= 60 and score < 80elif 中可简化为 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


关注公众号「安于欣」获取更多Python技巧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值