当前位置:首页>python>《Python 从入门到精通》023 | 嵌套判断:复杂逻辑是怎么一层层实现的

《Python 从入门到精通》023 | 嵌套判断:复杂逻辑是怎么一层层实现的

  • 2026-09-07 18:56:40
《Python 从入门到精通》023 | 嵌套判断:复杂逻辑是怎么一层层实现的

这一篇会让读者真正感受到,程序里的判断不是只能平着写,有时候还会一层套一层。很多看起来稍微复杂一点的业务逻辑,本质上就是这样搭出来的。

前面你已经学会了两种很重要的判断方式。

一种是最基础的 if。 满足条件,就执行。

另一种是 if...elif...else。 多个条件里,选一个最合适的结果。

可真实程序里,很多判断还会再复杂一点。

比如:

如果用户已经登录, 再判断他是不是管理员。

如果成绩及格了, 再判断是不是优秀。

如果商品有库存, 再判断余额够不够。

你会发现,这类逻辑不是并排展开的, 而是先判断第一层, 进入以后,再判断第二层。

这就是今天要讲的内容:

嵌套判断。

你可以先记住一句最核心的话:

嵌套判断,就是在判断里面继续判断。

一、什么是嵌套判断

先说最直白的理解。

所谓嵌套判断,就是一个 if 代码块里面,又出现了新的 if。

比如:

age = 20if age >= 18:    print('你已经成年')if age >= 60:        print('你是老年人')

这里就出现了两层判断。

第一层先判断:

年龄是不是大于等于 18

只有这个条件成立, 程序才会进入里面。

进入里面以后, 再判断第二层:

年龄是不是大于等于 60

这就叫嵌套判断。

它不是两个独立判断, 而是“在一个判断内部,再继续判断”。

二、为什么需要嵌套判断

因为很多场景本来就是分层的。

比如你去商场买东西,程序可能要这样判断:

先判断商品有没有库存 如果有库存,再判断你余额够不够 如果余额够,再判断你是不是会员 如果是会员,再给你折扣

你会发现,这不是一个平面判断。 而是一步一步往里走的。

再比如一个学生成绩系统:

先判断是否及格 如果及格,再判断是不是优秀 如果优秀,再判断是不是满分

这些逻辑天然就有层级感。

所以嵌套判断的价值就在这里:

它能把“先过第一关,再进第二关”的逻辑写出来。

三、先看一个最简单的嵌套判断例子

下面这个例子特别适合入门。

score = int(input('请输入成绩:'))if score >= 60:    print('成绩及格')if score >= 90:        print('成绩优秀')

你可以自己试几组输入。

输入 95,结果会是:

成绩及格成绩优秀

输入 75,结果会是:

成绩及格

输入 40,结果则什么都不会输出。

为什么会这样。

因为程序是这样走的:

先看第一层,score >= 60 成立吗 如果不成立,整个里面都不进 如果成立,先打印“成绩及格”

然后再看第二层,score >= 90 成立吗 如果成立,再打印“成绩优秀” 如果不成立,就结束

这就是最基础的嵌套判断流程。

四、把嵌套判断翻译成人话,你会更容易懂

还是刚才这段代码:

score = int(input('请输入成绩:'))if score >= 60:    print('成绩及格')if score >= 90:        print('成绩优秀')

你可以直接翻译成:

如果成绩及格, 就先告诉你及格了。 并且在这个前提下,再看看你是不是优秀。

你会发现,嵌套判断其实一点都不神秘。 它只是把现实里的分层思路写出来而已。

也就是说:

第一层判断决定你能不能进门 第二层判断决定你进门以后属于哪种情况

五、嵌套判断最关键的,不是 if 多写一个,而是层级

很多新手第一次看到嵌套判断时,会觉得:

不就是多写了一个 if 吗

表面上确实是。 但真正关键的不是“多一个 if”, 而是它写在谁里面。

来看这两段代码。

第一段,两个独立 if:

score = int(input('请输入成绩:'))if score >= 60:    print('成绩及格')if score >= 90:    print('成绩优秀')

第二段,嵌套判断:

score = int(input('请输入成绩:'))if score >= 60:    print('成绩及格')if score >= 90:        print('成绩优秀')

在这个例子里,它们结果看起来差不多。 但逻辑含义并不完全一样。

第一段是两个平行判断。 第二段是先及格,再在及格基础上继续判断优秀。

也就是说,嵌套判断更强调“第二层依赖第一层”。

这个思路以后会越来越重要。

六、嵌套判断特别依赖缩进

因为 Python 本来就是靠缩进表示层级。 一旦进入嵌套判断,缩进会变得更加重要。

比如:

age = 20if age >= 18:    print('你已经成年')if age >= 60:        print('你是老年人')

这里第二个 if 比第一个 if 里面的普通语句还要再缩进到同一层。 这就表示:

第二个 if 属于第一个 if 的内部。

如果你缩进写乱了,逻辑就会变。

比如下面这种:

age = 20if age >= 18:    print('你已经成年')if age >= 60:    print('你是老年人')

这就不是嵌套了, 而是两个独立判断。

所以嵌套判断里,缩进不是装饰, 而是结构本身。

七、先做一个“登录后再判断身份”的练习

这个例子特别像真实业务逻辑。

is_login = Trueis_admin = Falseif is_login:    print('用户已登录')if is_admin:        print('欢迎管理员')

程序逻辑是:

先看用户是否已登录 只有登录了,才有必要继续判断是不是管理员

如果连登录都没有, 后面管理员判断就没有意义。

这就是嵌套判断很典型的使用方式:

先判断大前提 大前提成立后,再判断更细的条件

你也可以自己改几个值试试:

is_login = Falseis_admin = True

看看输出会发生什么变化。

八、嵌套判断很适合“先筛一层,再细分一层”的场景

这是个非常实用的理解方式。

比如:

先判断是否成年 再判断是不是老年人

先判断是否及格 再判断是不是优秀

先判断是否有库存 再判断是否有余额

先判断是否登录 再判断是不是管理员

你会发现,嵌套判断不是为了炫技, 而是因为很多问题本来就带着筛选结构。

先通过一个大条件, 再在通过的人里面继续分。

这种逻辑用嵌套写,特别自然。

九、自己动手做一个年龄分层判断

这个练习很适合现在做。

age = int(input('请输入年龄:'))if age >= 18:    print('你已经成年')if age >= 60:        print('你属于老年阶段')

你可以输入:

15 25 65

观察结果。

输入 15,什么都不输出。 输入 25,只输出成年。 输入 65,输出成年和老年阶段。

这非常能体现嵌套判断的层级关系。

十、嵌套判断和 if...elif...else 可以一起用

这一点很重要,因为真实程序经常会混合使用。

比如:

先判断是否及格 如果及格了,再判断是优秀还是普通及格 如果没及格,就直接输出不及格

代码可以这样写:

score = int(input('请输入成绩:'))if score >= 60:    print('成绩及格')if score >= 90:        print('等级:优秀')else:        print('等级:普通及格')else:    print('成绩不及格')

这段代码就把嵌套和 else 结合起来了。

它的逻辑特别清楚:

第一层先看及不及格 及格了,再分优秀和普通 没及格,直接走外层 else

这种写法特别值得你练。

十一、要学会分清“这个 else 是配谁的”

这是嵌套判断里新手最容易乱掉的地方。

比如下面这段:

score = int(input('请输入成绩:'))if score >= 60:    print('成绩及格')if score >= 90:        print('等级:优秀')else:        print('等级:普通及格')else:    print('成绩不及格')

这里有两个 else。

第一个内层 else,配的是:

if score >= 90:

第二个外层 else,配的是:

if score >= 60:

你怎么判断它们各自配谁。

看缩进。

谁和哪个 if 对齐, 它就是那个 if 的 else。

所以你以后看嵌套判断时,一定不要只看字。 一定要看缩进层级。

十二、先做一个“购物资格”嵌套练习

这个特别贴近实际。

stock = int(input('请输入库存:'))money = float(input('请输入余额:'))price = float(input('请输入商品价格:'))if stock > 0:    print('商品有库存')if money >= price:        print('余额充足,可以购买')

这个程序的逻辑非常自然:

先看商品有没有库存 如果没有库存,后面根本不用谈买不买 如果有库存,再看余额是否足够

这就是嵌套判断很适合的典型场景。

你可以试试下面几组输入:

库存 10,余额 100,价格 50 库存 10,余额 20,价格 50 库存 0,余额 100,价格 50

看看结果如何变化。

十三、嵌套判断和多个条件并排写,怎么选

这是个特别好的问题。

有些逻辑,你既可以写成嵌套, 也可以写成逻辑运算组合。

比如刚才那个购买资格例子, 你也可以写成:

if stock > 0and money >= price:    print('可以购买')

这当然没错。 而且更短。

那为什么还要学嵌套判断。

因为嵌套判断更适合“过程分层”的表达。

比如你想先告诉用户:

商品有库存

然后再告诉他:

余额是否足够

这种场景下,嵌套更清楚。

所以你可以这样理解:

如果你只关心最后一个整体结果, 有时逻辑运算更简洁。

如果你想表达一个分步骤、分层次的判断过程, 嵌套判断更自然。

十四、不要把所有复杂判断都硬写成一行

很多新手一学到逻辑运算,就特别想把所有条件都塞一行。

比如:

if age >= 18and score >= 60and money >= 100and name == '小明':

这样不是不能写, 但一旦逻辑再复杂一点,读起来会非常累。

而嵌套判断有一个好处:

它能把判断拆成一层层的步骤。

比如:

if age >= 18:if score >= 60:if money >= 100:            print('满足条件')

虽然代码更长, 但逻辑反而更清晰。

对新手来说,当前阶段宁可稍微长一点, 也要先把思路写清楚。

十五、嵌套不要太深,太深会很难读

这个现在先给你一个意识就够了。

嵌套判断是很有用, 但如果你一层套一层,套到四五层,代码就会开始变得很难看。

比如这种:

if 条件1:if 条件2:if 条件3:if 条件4:                print('...')

这就很容易让人看晕。

所以嵌套判断虽然要学, 但也要知道它是有代价的。

你现在先学会两层嵌套最重要。 后面等你学更多写法,再慢慢学怎么把复杂逻辑写得更优雅。

十六、自己动手做一个“先登录再看权限”的小程序

这个练习特别值得做。

username = input('请输入用户名:')password = input('请输入密码:')role = input('请输入身份:')if username == 'admin':if password == '123456':        print('登录成功')if role == '管理员':            print('欢迎进入后台系统')

这个例子的逻辑是:

先看用户名对不对 用户名对了,再看密码对不对 密码对了,再看身份是不是管理员

这就是非常标准的“层层通过”的嵌套结构。

你可以自己换几组输入试试, 感受一下程序是怎么一层一层往里走的。

十七、嵌套判断里,内层条件不会自己执行

这一点一定要形成直觉。

比如:

score = 40if score >= 60:    print('成绩及格')if score >= 90:        print('成绩优秀')

这里虽然 score >= 90 本身也是一个条件, 但它根本没机会单独执行。

因为外层 score >= 60 都没成立, 程序就不会进入里面。

所以你一定要明白:

内层判断不是独立运行的 它的前提是外层先放行

这也是为什么嵌套判断强调层级,而不是只是多写几个 if。

十八、再做一个“输入账号后判断会员等级”的练习

这个也很适合公众号读者自己练。

is_login = input('是否已登录,输入 yes 或 no:')level = input('请输入会员等级:')if is_login == 'yes':    print('登录成功')if level == '黄金':        print('享受 8 折优惠')elif level == '白银':        print('享受 9 折优惠')else:        print('享受普通会员优惠')

这个例子很有代表性。 因为它是外层 if,里面又套了一个 if...elif...else。

这正是很多真实程序很常见的写法。

先判断能不能进入下一步 进入后,再做更细的分类

十九、嵌套判断最容易犯的几个错误

第一个错误,缩进写乱。

这会直接导致层级错乱, 最常见的结果就是逻辑和你想的不一样,或者直接报错。

第二个错误,分不清内层 else 和外层 else 对应谁。

这个一定靠缩进看, 谁和哪个 if 对齐,它就属于谁。

第三个错误,把本来独立的条件硬写成嵌套。

不是所有多条件都适合嵌套。 如果两个判断本来互不依赖,写成两个独立 if 反而更清楚。

第四个错误,嵌套太深,自己都看不懂。

你现在先练两层最合适。 别一上来就写特别深的结构。

二十、今天一定要亲手完成的 3 个练习

第一个,成绩分层练习。

score = int(input('请输入成绩:'))if score >= 60:    print('成绩及格')if score >= 90:        print('成绩优秀')

第二个,购物资格练习。

stock = int(input('请输入库存:'))money = float(input('请输入余额:'))price = float(input('请输入价格:'))if stock > 0:    print('商品有库存')if money >= price:        print('可以购买')

第三个,登录权限练习。

is_login = Trueis_admin = Falseif is_login:    print('用户已登录')if is_admin:        print('欢迎管理员')

这三个练习类型不同, 但都非常能帮助你建立嵌套判断的直觉。

二十一、再做一个综合小练习

下面这个练习特别适合做今天的收尾。

需求:

输入学生姓名和成绩 如果成绩及格,输出及格 如果成绩及格且大于等于 90,输出优秀 如果不及格,输出不及格

代码如下:

name = input('请输入姓名:')score = int(input('请输入成绩:'))if score >= 60:    print(f'{name},你已及格')if score >= 90:        print(f'{name},你的成绩很优秀')else:        print(f'{name},继续保持')else:    print(f'{name},你还没有及格')

你可以分别输入:

95 75 40

对照结果看程序怎么一层层做判断。

这个例子特别好, 因为它同时包含了:

外层 if...else内层 if...else

层级感会非常明显。

二十二、写在最后

嵌套判断看起来比普通 if 复杂一点, 但它并不是更难的概念。 它只是让程序学会:

第一步判断以后, 在这个结果基础上,再继续判断下一步。

说到底,它很像现实生活里的决策过程。

先看你有没有资格进入下一步 进去了,再看你属于哪一类 再根据这一类,做下一层处理

很多稍微复杂一点的程序, 其实都是这样一层层搭起来的。

所以你现在学的,不只是一个语法技巧。 你是在学程序如何把复杂逻辑拆成一层层可执行的步骤。

这一步特别关键。

本文小结

嵌套判断就是在一个判断里面继续写新的判断。 它特别适合“先过第一层,再判断第二层”的场景。 嵌套判断最关键的是层级,而层级在 Python 里靠缩进表示。 内层判断不是独立运行的,必须在外层条件成立后才会执行。 嵌套判断可以和 if...elif...else 结合使用。 学习嵌套判断最重要的,不是多写一个 if,而是形成“分层决策”的思维。

下篇预告

第 24 篇,我们正式进入循环的第一步。

while 循环入门:让程序重复执行任务

到那一篇,你会真正看到,程序是怎么把“重复做一件事”这件事自动化的。

最新文章

随机文章