Python基础(4)| 详解程序选择结构:单分支、双分支与多分支逻辑(附代码)

前言

欢迎来到《跟着娟子姐学Python》第4章的进阶学习!在上一节,我们学习了程序的"顺序结构",代码像流水线一样从上往下执行。但在实际开发中,程序往往需要根据不同情况执行不同操作。例如:年龄大于18岁是成年人,否则是未成年人。这就需要用到我们今天要学的选择结构(分支结构)

一、初识选择结构

选择结构是根据条件的真假,来决定程序执行哪一段代码。在Python中,选择结构主要分为三种:

  1. 单分支结构:满足条件就执行,不满足就跳过。
  2. 双分支结构:满足条件执行A,否则执行B。
  3. 多分支结构 :满足条件1执行A,满足条件2执行B,......,否则执行Z。
    我们可以用一个简单的流程图来表示,如图所示:

二、单分支结构(if 语句)

单分支结构是最简单的逻辑,对应中文的"如果......就......"。
语法格式:

python 复制代码
if 表达式:
    语句块
  • 表达式:可以是逻辑运算、比较运算,或者是一个单纯的变量(利用其布尔值)。
  • 语句块 :必须缩进(通常4个空格),表示在if满足时执行的代码。
    【示例4-2】单分支结构实战
    下面代码演示了多种判断场景:
python 复制代码
# coding:utf-8
# (1) 比较运算符判断
number = eval(input('请输入您的6位中奖号码:'))
if number == 987654:
    print('恭喜您,中奖了')
    
if number != 987654:
    print('您未中本期大奖')
# (2) 利用对象的布尔值判断(奇数偶数)
n = 98 
if n % 2:  # 98%2的余数为0,布尔值为False,取反后为True(这里代码有误,应为 not n%2)
    print(n, '为奇数')
    
if not n % 2: # 余数为0,布尔值为False,not False为True
    print(n, '为偶数')

运行结果:

【知识点补充】

在Python中,所有对象都有一个布尔值。数字0、空字符串、None等的布尔值为False,其他为Trueif 语句后面可以直接跟一个变量,如 if flag:

三、双分支结构(if...else...)

双分支结构对应中文的"如果......否则......",必定会执行其中一块代码。
语法格式:

python 复制代码
if 表达式:
    语句块1
else:
    语句块2

【示例4-3】双分支结构实战

我们可以用更简洁的方式写上面的中奖判断:

python 复制代码
# coding:utf-8
number = eval(input('请输入您的6位中奖号码:'))
if number == 987654:
    print('恭喜您,中奖了')
else:
    print('您未中本期大奖')

运行结果:

【进阶写法:条件表达式】

如果是简单的赋值操作,可以使用"三元运算符"来简化if...else,使代码更Pythonic:

python 复制代码
# result = "值1" if 条件 else "值2"
# 上面示例可写成:
result = '恭喜您中奖了' if number == 987654 else '您未中本期大奖'
print(result)
# 甚至直接一行输出:
print('恭喜您中奖了' if number == 987654 else '您未中本期大奖')
# 两种方式等价,更推荐第一种,可读性更好。

四、多分支结构(if...elif...else...)

当需要进行多次判断时,就需要用到多分支结构。它类似其他语言中的switch...case,但更灵活。
语法格式:

python 复制代码
if 表达式1:
    语句块1
elif 表达式2:
    语句块2
...
elif 表达式n:
    语句块n
else:
    语句块n+1
  • 执行逻辑 :从上往下判断,一旦某个elif条件为True,就执行对应的语句块,并直接结束整个分支结构,后续所有判断都会被跳过。
  • else 是可选的,相当于"兜底"。
    【示例4-4】多分支结构实战:成绩等级划分
    这是一个非常经典的案例:
python 复制代码
# coding:utf-8
score = eval(input('请输入您的成绩:'))
if score < 0 or score > 100:
    print('成绩有误')
elif 0 <= score < 60:
    print('E')
elif 60 <= score < 70:
    print('D')
elif 70 <= score < 80:
    print('C')
elif 80 <= score < 90:
    print('B')
else:
    print('A')

运行结果:

五、结构嵌套:复杂逻辑的实现

ifelifelse的语句块中,可以再包含一个完整的if结构,这叫分支结构的嵌套 。例如,在判断喝酒了之后,还要判断酒精含量。
【示例4-5】嵌套if:酒驾判断

python 复制代码
# coding:utf-8
answer = input('请问,您喝酒了吗?')
if answer == 'y':  # 外层判断
    proof = eval(input('请输入酒精含量:'))
    if proof < 20:  # 内层判断1
        print('构不成酒驾,祝您一路平安')
    elif proof < 80:  # 内层判断2
        print('已构成酒驾标准,请不要开车')
    else:  # 内层判断3的else
        print('已达到醉驾标准,请千万不要开车')
else:  # 外层判断的else
    print('你走吧,没你啥事儿')

运行结果(喝酒了的情况):

运行结果(没喝酒的情况):

六、逻辑运算符的连接

在实际开发中,判断条件通常很复杂,需要使用and(与)和or(或)连接多个条件。

  • and:所有条件都为真,结果才为真。
  • or :只要有一个条件为真,结果就为真。
    【示例4-6】模拟用户登录(使用and)
python 复制代码
# coding:utf-8
user_name = input('请输入您的用户名:')
pwd = input('请输入您的密码:')
if user_name == 'ysj' and pwd == '888888':
    print('登录成功')
else:
    print('用户名或密码不正确')


【示例4-7】成绩有效性判断(使用or)

python 复制代码
# coding:utf-8
score = eval(input('请输入您的成绩:'))
if score < 0 or score > 100:
    print('成绩无效')
else:
    print('您的成绩为:', score)

七、本章总结

  • 选择结构:让程序拥有了"决策"能力。
  • if:单分支,条件真则执行。
  • if...else...:双分支,二选一。
  • if...elif...else...:多分支,多选一。
  • 嵌套if:处理复杂分层逻辑。
  • 逻辑运算符andor 用于组合条件。
    下一节,我们将进入更激动人心的循环结构,让程序实现"重复劳动"!

点赞收藏,不迷路!


相关推荐
kdniao118 小时前
PHP 页面中如何实现根据快递单号查询物流轨迹?对接快递鸟在途监控 API 实操
android·开发语言·php
TDengine (老段)18 小时前
TDengine 脱敏函数用户手册
大数据·服务器·数据库·物联网·时序数据库·iot·tdengine
癫狂的兔子18 小时前
【BUG】【Python】【Spider】Compound class names are not allowed.
开发语言·python·bug
言之。18 小时前
MacBook M3 Pro:React Native 安卓开发
android·react native·react.js
木头左18 小时前
基于Backtrader框架的指数期权备兑策略实现与验证
python
玉树临风江流儿18 小时前
WSL2通过主机转发流量,实现与开发板互相ping通
linux·服务器·网络
感觉不怎么会18 小时前
Android 13 - 对讲app后台休眠后无法录音
android·linux
程序 代码狂人18 小时前
CentOS7中有趣的yum源(彩蛋)-----第二期
linux·运维·服务器
李松桃18 小时前
python第三次作业
java·前端·python