当前位置:首页>python>《Python 从入门到精通》022 | if...elif...else:多条件判断怎么写更清晰

《Python 从入门到精通》022 | if...elif...else:多条件判断怎么写更清晰

  • 2026-09-02 19:07:20
《Python 从入门到精通》022 | if...elif...else:多条件判断怎么写更清晰

这一篇非常关键,因为真实程序里,很多时候不是只有“满足”或者“不满足”两种情况,而是会出现很多种不同分支。

上一篇你已经学会了最基础的 if。

也就是:

如果条件成立,就执行某段代码。

比如:

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

这类判断很好理解。 可你很快就会发现,真实场景往往不只一种结果。

比如成绩判断,不只是及格和不及格。 还可能有:

90 分以上,优秀 80 分以上,良好 60 分以上,及格 60 分以下,不及格

再比如年龄判断,也不只是成年和未成年。 还可能有:

6 岁以下,幼儿 6 到 17 岁,未成年 18 到 59 岁,成年人 60 岁及以上,老年人

这时候,单纯一个 if 就不够用了。 因为你要面对的是多个条件、多个分支。

这时就要轮到今天的主角上场了:

if...elif...else

这一篇,我们就把多条件判断彻底讲清楚。

一、为什么要学 if...elif...else

先想一个特别现实的问题。

假设你要写一个程序,根据分数给出评价。

如果你只会最基础的 if,那你可能会想这样写:

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

看起来好像没问题。 但如果用户输入 95,会发生什么。

程序会输出:

优秀良好及格

这显然不太对。 因为 95 分应该只属于“优秀”,不应该后面又冒出“良好”和“及格”。

这就说明,多个条件之间,有时候不是彼此独立的。 而是“只要命中一个,就不要再继续往下判断”。

这就是 if...elif...else 的用武之地。

二、if...elif...else 到底是什么

你可以先把它理解成一句很朴素的话:

如果这个条件成立,就做这件事。 否则如果另一个条件成立,就做另一件事。 如果前面都不成立,就做最后那件事。

它的基本结构长这样:

if 条件1:    条件1成立时执行的代码elif 条件2:    条件2成立时执行的代码else:    前面条件都不成立时执行的代码

这里有三个关键词:

if表示第一个判断

elif表示“否则如果”

else表示“否则”

你现在先不用急着背。 先把它翻译成人话:

如果…… 否则如果…… 否则……

一旦翻成这个思路,逻辑就会顺很多。

三、先看一个最基础的完整例子

还是用分数判断最直观。

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

这段代码的意思是:

如果分数大于等于 90,就输出优秀 否则如果分数大于等于 60,就输出及格 否则就输出不及格

你可以自己试三组输入:

95 75 40

对应结果分别会是:

优秀及格不及格

这个例子特别值得你反复体会。 因为从这一刻开始,程序已经不只是会判断一个条件了, 它会在多种可能中选一种最合适的结果。

四、elif 到底是什么意思

很多新手第一次看到 elif 会觉得有点怪。

其实你完全可以把它拆开理解:

else if

只不过 Python 里把它合成了一个单词:

elif

它的意思就是:

如果前面的 if 不成立,那我再来判断这个条件。

所以它不是和 if 平行同时判断的。 它有一个重要前提:

前面的条件没命中,才轮到它。

这一点特别关键。 因为这正是 if...elif...else 和多个独立 if 的最大区别。

五、多个独立 if 和 if...elif...else 有什么本质区别

这个问题一定要讲透。

先看多个独立 if:

score = 95if score >= 90:    print('优秀')if score >= 80:    print('良好')if score >= 60:    print('及格')

这里三个 if 是独立的。 所以只要各自条件成立,就都会执行。

而下面这种:

score = 95if score >= 90:    print('优秀')elif score >= 80:    print('良好')elif score >= 60:    print('及格')else:    print('不及格')

它们不是独立的。 它是一整组判断链。

一旦前面有一个条件成立了, 后面的 elif 和 else 就不会再执行。

所以你一定要区分清楚:

多个 if适合彼此独立、可以同时成立的条件

if...elif...else适合多选一、命中一个就停的条件

六、为什么多条件判断通常更适合 if...elif...else

因为很多分类场景,本来就是互斥的。

比如成绩等级:

优秀 良好 及格 不及格

一个分数不可能同时属于这四个等级。 所以最合适的写法,就是 if...elif...else。

再比如年龄分类:

儿童 青少年 成年人 老年人

一个年龄也只会落进其中一个区间。

所以你以后看到这种场景:

一组条件里,最终只应该选一个结果

就要优先想到:

if...elif...else

七、先做一个最典型的成绩等级判断

这个例子你一定要亲手敲。

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

你可以输入几组数据看看:

95 85 70 40

观察一下结果是不是只会输出一种等级。

这个例子非常重要, 因为它几乎是理解 elif 最经典的入门场景。

八、判断顺序为什么特别重要

这一点非常关键。

比如刚才那个成绩判断,如果你写成这样:

score = int(input('请输入成绩:'))if score >= 60:    print('及格')elif score >= 80:    print('良好')elif score >= 90:    print('优秀')else:    print('不及格')

看起来也有 if...elif...else。 但逻辑其实已经错了。

为什么。

因为如果输入 95,程序会先判断:

score >= 60 成立吗

答案是成立。 那程序立刻输出“及格”,然后整组判断结束。 后面的 80、90 再也不会看了。

所以结果就错了。

这说明什么。

说明多条件判断时,顺序特别重要。 一般来说,要把要求更高、范围更小的条件放前面。

也就是:

先判断 90 再判断 80 再判断 60

而不是反过来。

九、一个特别实用的原则:范围大的条件通常放后面

比如成绩判断里:

score >= 90 范围最小score >= 80 范围更大score >= 60 范围更大

所以正确顺序应该是:

if score >= 90:elif score >= 80:elif score >= 60:else:

同样道理,年龄分类也一样。

比如:

60 岁及以上 18 到 59 岁 6 到 17 岁 6 岁以下

你通常要先判断更明确、更高的边界, 这样逻辑才不会互相覆盖。

这个原则你后面会越用越多。

十、else 到底有什么用

else 的作用就是:

当前面所有条件都不成立时,执行最后这个兜底分支。

你可以把它理解成:

前面都不是,那就走这里。

比如:

score = int(input('请输入成绩:'))if score >= 60:    print('及格')else:    print('不及格')

这里 else 特别自然。 如果及格条件成立,就输出及格。 否则,就输出不及格。

在多条件里也是一样。

if score >= 90:    print('优秀')elif score >= 80:    print('良好')elif score >= 60:    print('及格')else:    print('不及格')

这里 else 就表示:

前面优秀、良好、及格都不满足, 那就只能是不及格了。

所以 else 经常像一个“收尾兜底”。

十一、else 不是必须的,但很多时候很有用

你可以只写:

if 条件:    ...elif 条件:    ...

不一定非要有 else。

比如:

age = int(input('请输入年龄:'))if age >= 18:    print('你已经成年')elif age >= 12:    print('你是青少年')

这段代码是合法的。

只是如果用户输入 8, 程序就不会输出任何内容。

所以:

else 不是语法必须 但如果你希望“前面都不满足时也有个结果”, 那它就很有价值。

对新手来说,很多分类问题都建议带上 else, 这样程序更完整,也更容易理解。

十二、if...elif...else 是从上往下判断的

这个执行顺序你一定要刻进脑子里。

程序不会一下子把所有条件都同时看完。 它是按顺序一条一条往下看。

比如:

score = 85if score >= 90:    print('优秀')elif score >= 80:    print('良好')elif score >= 60:    print('及格')else:    print('不及格')

程序会先看:

第一条,score >= 90 成立吗 不成立,那继续往下

第二条,score >= 80 成立吗 成立,于是输出“良好”,然后停止整组判断

后面的 elif score >= 60 和 else 就都不再看了。

所以你以后读这类代码时, 脑子里一定要有“从上往下,命中即停”的感觉。

十三、自己动手做一个年龄分类练习

这个练习特别适合现在做。

age = int(input('请输入年龄:'))if age >= 60:    print('老年人')elif age >= 18:    print('成年人')elif age >= 6:    print('未成年人')else:    print('幼儿')

你可以输入几组数据:

65 25 12 3

看输出分别是什么。

这个例子很有代表性, 因为它不是简单的“是或不是”, 而是真正开始做区间分类了。

十四、字符串判断也可以写成多分支

别以为 if...elif...else 只能配合数字。

字符串也完全可以。

比如根据不同用户名,输出不同欢迎语:

name = input('请输入姓名:')if name == '小明':    print('欢迎你,小明')elif name == '小红':    print('欢迎你,小红')elif name == '老师':    print('老师您好')else:    print('欢迎你,陌生朋友')

这个程序就很典型。

它在多个可能值里, 根据输入内容选择一个最合适的分支。

这说明:

if...elif...else 不是只看数字大小 它本质上是在处理“多个可能中的选择问题”

十五、if...elif...else 和布尔变量也可以结合起来

比如前面你学过把判断结果先保存成变量。

现在也可以这么写:

score = int(input('请输入成绩:'))is_excellent = score >= 90is_good = score >= 80is_pass = score >= 60if is_excellent:    print('优秀')elif is_good:    print('良好')elif is_pass:    print('及格')else:    print('不及格')

虽然这个例子里直接写条件可能更短, 但这种先拆成布尔变量的写法, 在条件变复杂时会非常清楚。

对新手来说,这种写法特别适合训练“把条件想清楚”的能力。

十六、不要一看到 elif 就害怕,它本质上只是“否则如果”

这个地方我想单独强调一下。

有些人第一次学到 elif, 会下意识觉得它比 if 难很多。

其实不是。

你完全可以把下面这段:

if 条件1:    ...elif 条件2:    ...else:    ...

直接翻译成:

如果条件1成立,就…… 否则如果条件2成立,就…… 否则,就……

一旦这么翻译,逻辑其实特别自然。 它并不复杂,只是多了几条可能路线而已。

十七、先别急着写太复杂,最重要的是先把“多选一”感觉练出来

现阶段你最该练的,不是超复杂业务判断。 而是这种感觉:

这几个条件中,最终只应该走一条

比如:

根据分数选一个等级 根据年龄选一个阶段 根据身份选一种欢迎语 根据库存状态选一种提示

这些都属于最典型的“多选一”。

而 if...elif...else 正是专门干这个的。

你只要先把这种感觉练稳, 后面写复杂程序时,就不会乱得太厉害。

十八、实操,做一个天气提示小程序

这个例子简单但很实用。

weather = input('请输入天气:')if weather == '晴天':    print('适合出门')elif weather == '下雨':    print('记得带伞')elif weather == '下雪':    print('注意保暖')else:    print('祝你今天一切顺利')

这个程序特别适合用来体会:

字符串输入 多分支判断 兜底 else

你可以自己多输入几种天气试试。 看看程序是不是总能选出一条合适的输出。

十九、实操,做一个会员折扣提示程序

这个例子也很像真实业务。

level = input('请输入会员等级:')if level == '黄金':    print('享受 8 折优惠')elif level == '白银':    print('享受 9 折优惠')elif level == '普通':    print('享受 95 折优惠')else:    print('当前无会员折扣')

你可以输入:

黄金 白银 普通 游客

观察结果。

这个例子特别能帮助你理解: 程序是如何在多个可能中,匹配一个对应结果的。

二十、if...elif...else 最容易犯的几个错误

第一个错误,条件顺序写反了。

比如先写 score >= 60,后写 score >= 90。 这样高分就会先被低门槛条件截走。

第二个错误,漏掉冒号。

错误写法:

if score >= 90    print('优秀')

正确写法:

if score >= 90:    print('优秀')

第三个错误,缩进不一致。

比如 if 下面缩了 4 个空格,elif 下面缩得乱七八糟, 很容易报错。

第四个错误,把 elif 当成独立 if 使用思路去理解。

一定要记住,elif 的前提是前面的条件没命中。 它不是平行同时执行的。

第五个错误,觉得 else 一定要有。

不是。 它很常用,但不是强制。

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

第一个,成绩等级判断。

score = int(input('请输入成绩:'))if score >= 90:    print('优秀')elif score >= 80:    print('良好')elif score >= 60:    print('及格')else:    print('不及格')

第二个,年龄分类判断。

age = int(input('请输入年龄:'))if age >= 60:    print('老年人')elif age >= 18:    print('成年人')elif age >= 6:    print('未成年人')else:    print('幼儿')

第三个,字符串多分支判断。

role = input('请输入你的身份:')if role == '学生':    print('欢迎进入学生系统')elif role == '老师':    print('欢迎进入教师系统')elif role == '管理员':    print('欢迎进入后台管理系统')else:    print('身份未识别')

这三个练习类型不同, 正好能帮你把数字分类和字符串分类都练到。

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

下面这个例子很适合作为今天的综合练习。

需求:

输入姓名和成绩 根据成绩输出等级评价

代码如下:

name = input('请输入姓名:')score = int(input('请输入成绩:'))if score >= 90:    print(f'{name},你的等级是优秀')elif score >= 80:    print(f'{name},你的等级是良好')elif score >= 60:    print(f'{name},你的等级是及格')else:    print(f'{name},你的等级是不及格')

这个小程序特别适合公众号读者自己去改。

比如你可以继续加一个分支:

100 分,满分表现

if score == 100:    print(f'{name},你考了满分')elif score >= 90:    print(f'{name},你的等级是优秀')...

这类改造练习特别有价值, 因为你开始不只是照抄,而是在真正操控判断逻辑。

二十三、写在最后

从 if 到 if...elif...else, 看起来只是多学了两个单词。

但程序能力其实往前迈了一大步。

因为最基础的 if 只是让程序学会:

满足条件,就执行

而 if...elif...else 则让程序学会:

在多个可能里,选出最合适的那个

这就已经非常接近真实程序逻辑了。

现实世界里的很多规则,本来就不是“是或不是”那么简单。 往往是很多种情况并存。 而程序能不能写得像样, 很大程度上就取决于你能不能把这些情况整理清楚,再用多分支判断表达出来。

你现在学的,不只是一个语法升级。 你是在学程序如何做更像样的选择。

本文小结

if...elif...else 适合处理多条件、多分支、只选一个结果的场景。elif 的意思是“否则如果”。else 表示前面条件都不成立时执行的兜底分支。 这组判断是从上往下执行的,一旦命中一个分支,后面就不会再判断。 多条件判断时,条件顺序特别重要,通常要把范围更小、要求更高的条件放前面。 学习这一部分最关键的,不只是记格式,而是形成“多选一”的判断思维。

下篇预告

第 23 篇,我们继续把判断能力往前推进。

嵌套判断:复杂逻辑是怎么一层层实现的

到那一篇,你会看到,当一个判断里面还需要继续判断时,程序是怎么一层一层把逻辑搭出来的。

最新文章

随机文章