当前位置:首页>python>Python if-elif-else语句——多条件判断

Python if-elif-else语句——多条件判断

  • 2026-09-02 20:17:30
Python if-elif-else语句——多条件判断

一、什么是if-elif-else?

if-elif-else 是Python中用于多条件判断的语句。当有多个互斥的条件需要依次判断时,使用 elif(即“else if”的缩写)。它允许程序在多个条件中选择第一个为真的分支执行。

score = 85
if score >= 90:
    grade = 'A'
elif score >= 80:
    grade = 'B'
elif score >= 70:
    grade = 'C'
elif score >= 60:
    grade = 'D'
else:
    grade = 'F'
print(f"成绩等级:{grade}")

二、基本语法

if 条件1:
    条件1为真时执行的代码块
elif 条件2:
    条件1为假且条件2为真时执行的代码块
elif 条件3:
    条件1、2为假且条件3为真时执行的代码块
...
else:
    所有条件都为假时执行的代码块(可选)

语法要点:

  • • if、elif、else 都是关键字
  • • 每个条件后面必须有冒号 :
  • • 每个分支的代码块必须缩进(通常4个空格)
  • • elif 可以有任意多个
  • • else 是可选的,最多一个,且必须放在最后

三、执行流程

  1. 1. 从上到下依次判断每个条件。
  2. 2. 一旦遇到某个条件为真,就执行对应的代码块,然后跳过整个if-elif-else结构,继续执行后面的代码。
  3. 3. 如果所有条件都为假,则执行 else 分支(如果有的话)。

可以用下图表示:

       ┌──────┐
       │ 条件1 │
       └───┬──┘
           │
     真 ┌──┴──┐ 假
        ▼      │
   执行代码块1 │
        │      ▼
        │   ┌──────┐
        │   │ 条件2 │
        │   └───┬──┘
        │       │
        │ 真 ┌──┴──┐ 假
        │   ▼      │
        │ 执行块2  │
        │   │      ▼
        │   │     ... (继续)
        │   │      │
        │   │      ▼
        │   │   ┌──────┐
        │   │   │ else │
        │   │   └───┬──┘
        │   │       ▼
        │   │   执行else块
        │   │      │
        └───┴───┬──┘
                ▼
            后续代码

四、简单示例

示例1:数字的正负零判断

num = int(input("请输入一个整数:"))
if num > 0:
print("正数")
elif num < 0:
print("负数")
else:
print("零")

示例2:根据分数输出等级(经典)

score = int(input("请输入分数(0-100):"))
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 70:
print("中等")
elif score >= 60:
print("及格")
else:
print("不及格")

示例3:简单的菜单选择

choice = input("请选择功能(1-3):")
if choice == '1':
print("执行功能1")
elif choice == '2':
print("执行功能2")
elif choice == '3':
print("执行功能3")
else:
print("无效选择")

五、if-elif-else 与 多个独立if 的区别

初学者容易混淆用多个 if 来代替 if-elif-else,但两者逻辑不同。

# 使用多个独立if
x = 5
if x > 0:
print("正数")
if x < 0:
print("负数")
if x == 0:
print("零")
# 输出:正数

上面没问题,因为三个条件互斥,只会有一个成立。

# 但如果条件不互斥,多个if可能执行多个分支
x = 5
if x > 0:
print("正数")
if x > 2:
print("大于2")
# 输出:正数 大于2

而用 if-elif-else 则最多执行一个分支:

x = 5
if x > 0:
print("正数")
elif x > 2:
print("大于2")   # 这个不会执行,因为第一个条件已满足
# 输出:正数

总结:

  • • 当多个条件互斥(即不可能同时成立)时,用多个 if 或 if-elif-else 均可,但 if-elif-else 更高效(判断到第一个真就停止)。
  • • 当条件可能同时成立且希望执行所有满足条件的分支时,必须用多个独立的 if。
  • • if-elif-else 结构保证最多执行一个分支。

六、if-elif-else 的注意事项

6.1 条件顺序很重要

因为条件是从上到下依次判断的,所以要把最严格、最优先的条件放在前面。

# 错误顺序:永远得不到'A'
score = 95
if score >= 60:
    grade = 'D'
elif score >= 80:
    grade = 'B'
elif score >= 90:
    grade = 'A'
print(grade)  # 输出 D,因为第一个条件就满足了

# 正确顺序
if score >= 90:
    grade = 'A'
elif score >= 80:
    grade = 'B'
elif score >= 60:
    grade = 'C'
else:
    grade = 'D'

6.2 elif 不能单独使用,必须跟在 if 之后

# 错误
elif x > 5:   # SyntaxError: invalid syntax
print("x > 5")

6.3 else 后面不能跟条件

if x > 0:
print("正数")
else x <= 0:   # ❌ 错误,else后面不能有条件
print("非正数")

6.4 冒号和缩进不能忘

if x > 0# 缺少冒号
print("正数")

6.5 每个分支的代码块可以有多行

if x > 0:
print("这是正数")
print("它的值是", x)
elif x < 0:
print("这是负数")
print("它的绝对值是", -x)

6.6 条件可以是复杂的表达式

if (age >= 18and has_id) or is_vip:
print("允许进入")
elif age < 12:
print("儿童免费")
else:
print("请购票")

七、if-elif-else 与 字典映射的替代方案

对于多条件等值判断(如菜单选择),有时可以用字典代替 if-elif-else,使代码更简洁。

# if-elif-else 方式
defhandle_choice(choice):
if choice == '1':
print("执行功能1")
elif choice == '2':
print("执行功能2")
elif choice == '3':
print("执行功能3")
else:
print("无效选择")

# 字典映射方式
defhandle_choice(choice):
    actions = {
'1': lambda: print("执行功能1"),
'2': lambda: print("执行功能2"),
'3': lambda: print("执行功能3")
    }
    action = actions.get(choice)
if action:
        action()
else:
print("无效选择")

对于简单的值映射,字典可能更清晰;对于范围判断(如分数区间),if-elif-else 更合适。


八、嵌套if-elif-else

if-elif-else 内部可以嵌套另一层 if-elif-else,但应避免过深,否则可读性差。

age = 20
gender = 'M'
if age >= 18:
if gender == 'M':
print("成年男性")
elif gender == 'F':
print("成年女性")
else:
print("成年,性别未知")
else:
print("未成年")

过深的嵌套可以考虑重构,比如用逻辑运算符合并条件,或将内层逻辑提取为函数。


九、实战案例

案例1:BMI分类器

weight = float(input("体重(kg):"))
height = float(input("身高(m):"))
bmi = weight / (height ** 2)

if bmi < 18.5:
    category = "偏瘦"
elif bmi < 24:
    category = "正常"
elif bmi < 28:
    category = "偏胖"
else:
    category = "肥胖"

print(f"BMI:{bmi:.1f},体型:{category}")

案例2:日期有效性判断(简化版)

year = int(input("年份:"))
month = int(input("月份:"))
day = int(input("日期:"))

if month in [1, 3, 5, 7, 8, 10, 12]:
    max_day = 31
elif month in [4, 6, 9, 11]:
    max_day = 30
elif month == 2:
if (year % 4 == 0and year % 100 != 0) or (year % 400 == 0):
        max_day = 29
else:
        max_day = 28
else:
print("月份无效")
    max_day = None

if max_day and1 <= day <= max_day:
print(f"{year}年{month}月{day}日是有效日期")
else:
print("无效日期")

案例3:简单的计算器(支持连续运算,但这里只演示一次判断)

a = float(input("第一个数:"))
op = input("运算符(+ - * /):")
b = float(input("第二个数:"))

if op == '+':
    result = a + b
elif op == '-':
    result = a - b
elif op == '*':
    result = a * b
elif op == '/':
if b == 0:
        result = "除数不能为0"
else:
        result = a / b
else:
    result = "不支持的运算符"

print(f"结果:{result}")

案例4:根据成绩输出评语

score = int(input("请输入成绩:"))
if score >= 90:
    comment = "优秀,继续保持!"
elif score >= 80:
    comment = "良好,可以更好"
elif score >= 70:
    comment = "中等,努力一下"
elif score >= 60:
    comment = "及格,需要加强"
else:
    comment = "不及格,加油!"
print(comment)

案例5:季节判断

month = int(input("请输入月份(1-12):"))
if month in [3, 4, 5]:
    season = "春季"
elif month in [6, 7, 8]:
    season = "夏季"
elif month in [9, 10, 11]:
    season = "秋季"
elif month in [12, 1, 2]:
    season = "冬季"
else:
    season = "无效月份"

print(f"{month}月是{season}")

十、总结

  • • if-elif-else 用于处理多个互斥条件,最多执行一个分支。
  • • 条件判断从上到下,遇到第一个真就执行对应的分支。
  • • 要注意条件的顺序,把最可能满足或最严格的条件放在前面。
  • • 当条件不互斥且需要执行所有满足条件的分支时,应使用多个独立的 if。
  • • elif 不能单独使用,必须跟在 if 之后;else 可选且不能带条件。
  • • 可以用字典映射替代简单的等值判断,但范围判断仍需 if-elif。

掌握 if-elif-else 是编写复杂逻辑的基础,多写多练,很快就能熟练运用。

最新文章

随机文章