Python分支结构详解:if、elif与嵌套用法

陈默
陈默
发布时间:2026-10-13 | 6人浏览过
原创

本文深入讲解Python中的分支结构,介绍如何使用if、elif和else关键字构建条件逻辑。通过分段函数、身份验证等实例,演示单分支、多分支及嵌套分支的实现方式,并强调扁平化代码的可读性优势,帮助开发者掌握Python条件控制的核心技巧。

分支结构的应用场景

分支结构的应用场景

到目前为止,我们编写的Python代码都是按照书写顺序逐行执行的,这种执行方式被称为顺序结构。然而,仅依靠顺序结构无法处理所有实际问题。例如在设计游戏时,第一关的通关条件可能是玩家获得1000分。完成本局后,系统需要根据玩家得分判断是进入第二关还是提示“Game Over”。这种情况下,程序会产生两个分支,且每次运行只执行其中一个分支,这就是分支结构。类似场景在生活中随处可见,不妨花一分钟思考至少5个这样的例子。

if语句的基本用法

if语句的使用

在Python中,构造分支结构主要依赖if、elif和else这三个关键字。关键字是指具有特殊语法含义的单词,如if和else专门用于定义分支逻辑,因此不能将它们用作变量名(其他标识符也需避免使用关键字)。以下示例展示了如何构建基本的分支结构。


"""
用户身份验证

Version: 0.1
Author: 骆昊
"""

username = input('请输入用户名: ')
password = input('请输入口令: ')
# 如果希望输入口令时 终端中没有回显 可以使用getpass模块的getpass函数
# import getpass
# password = getpass.getpass('请输入口令: ')
if username == 'admin' and password == '123456':
  print('身份验证成功!')
else:
  print('身份验证失败!')

值得注意的是,与C/C++或Java等语言不同,Python不使用花括号来定义代码块,而是通过缩进表示代码的层级关系。如果if条件成立时需要执行多条语句,只需确保这些语句具有相同的缩进量即可。换句话说,保持相同缩进的连续代码被视为同一个代码块,构成一个完整的执行整体。

多分支与分段函数

若需处理更多分支情况,可以使用if…elif…else结构。例如,计算以下分段函数的值:

$$f(x)=\begin{cases} 3x-5&\text{(x>1)}\x+2&\text{(-1}\leq\text{x}\leq\text{1)}\5x+3&\text {(x<-1)}\end{cases}$$


"""
分段函数求值

    3x - 5 (x > 1)
f(x) = x + 2  (-1 <= x <= 1)
    5x + 3 (x < -1)

Version: 0.1
Author: 骆昊
"""

x = float(input('x = '))
if x > 1:
  y = 3 * x - 5
elif x >= -1:
  y = x + 2
else:
  y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))

嵌套分支结构

实际开发中,分支结构支持嵌套使用。例如,在判断是否通关后,还需根据获得的宝物或道具数量评定等级(如点亮两颗或三颗星星)。此时,需在if内部构建新的分支结构;同理,elif和else中也可嵌套新分支,这被称为嵌套分支结构。上述代码也可改写为嵌套形式。


"""
分段函数求值
		3x - 5	(x > 1)
f(x) =	x + 2	(-1 <= x <= 1)
		5x + 3	(x < -1)

Version: 0.1
Author: 骆昊
"""

x = float(input('x = '))
if x > 1:
  y = 3 * x - 5
else:
  if x >= -1:
    y = x + 2
  else:
    y = 5 * x + 3
print('f(%.2f) = %.2f' % (x, y))

**说明:**读者可自行对比这两种写法。Python之禅中提到“Flat is better than nested.”,即扁平结构优于嵌套结构。这是因为多层嵌套会显著降低代码可读性,因此推荐优先使用扁平化写法。

练习1:英制单位与公制单位互换


"""
英制单位英寸和公制单位厘米互换

Version: 0.1
Author: 骆昊
"""

value = float(input('请输入长度: '))
unit = input('请输入单位: ')
if unit == 'in' or unit == '英寸':
  print('%f英寸 = %f厘米' % (value, value * 2.54))
elif unit == 'cm' or unit == '厘米':
  print('%f厘米 = %f英寸' % (value, value / 2.54))
else:
  print('请输入有效的单位')

练习2:掷骰子决定做什么


"""
掷骰子决定做什么事情

Version: 0.1
Author: 骆昊
"""

from random import randint

face = randint(1, 6)
if face == 1:
  result = '唱首歌'
elif face == 2:
  result = '跳个舞'
elif face == 3:
  result = '学狗叫'
elif face == 4:
  result = '做俯卧撑'
elif face == 5:
  result = '念绕口令'
else:
  result = '讲冷笑话'
print(result)

**说明:**上述代码调用了random模块中的randint函数,用于生成指定范围内的随机整数,以模拟掷骰子过程。

练习3:百分制成绩转等级制


"""
百分制成绩转等级制成绩
90分以上  --> A
80分~89分  --> B
70分~79分	  --> C
60分~69分  --> D
60分以下  --> E

Version: 0.1
Author: 骆昊
"""

score = float(input('请输入成绩: '))
if score >= 90:
  grade = 'A'
elif score >= 80:
  grade = 'B'
elif score >= 70:
  grade = 'C'
elif score >= 60:
  grade = 'D'
else:
  grade = 'E'
print('对应的等级是:', grade)

练习4:输入三条边长如果能构成三角形就计算周长和面积


"""
判断输入的边长能否构成三角形
如果能则计算出三角形的周长和面积

Version: 0.1
Author: 骆昊
"""

import math

a = float(input('a = '))
b = float(input('b = '))
c = float(input('c = '))
if a + b > c and a + c > b and b + c > a:
  print('周长: %f' % (a + b + c))
  p = (a + b + c) / 2
  area = math.sqrt(p * (p - a) * (p - b) * (p - c))
  print('面积: %f' % (area))
else:
  print('不能构成三角形')

练习5:个人所得税计算器。


"""
输入月收入和五险一金计算个人所得税

Version: 0.1
Author: 骆昊
"""

salary = float(input('本月收入: '))
insurance = float(input('五险一金: '))
diff = salary - insurance - 3500
if diff <= 0:
  rate = 0
  deduction = 0
elif diff < 1500:
  rate = 0.03
  deduction = 0
elif diff < 4500:
  rate = 0.1
  deduction = 105
elif diff < 9000:
  rate = 0.2
  deduction = 555
elif diff < 35000:
  rate = 0.25
  deduction = 1005
elif diff < 55000:
  rate = 0.3
  deduction = 2755
elif diff < 80000:
  rate = 0.35
  deduction = 5505
else:
  rate = 0.45
  deduction = 13505
tax = abs(diff * rate - deduction)
print('个人所得税: ¥%.2f元' % tax)
print('实际到手收入: ¥%.2f元' % (diff + 3500 - tax))
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表