楼主: Chengjiajia322
132 0

[其他] 【Python入门】5.1分支语句--if [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

学前班

40%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
20 点
帖子
1
精华
0
在线时间
0 小时
注册时间
2018-11-13
最后登录
2018-11-13

楼主
Chengjiajia322 发表于 2025-11-28 16:17:26 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

Python 条件控制语句 if 全面解析(从入门到精通)

在 Python 编程中,if 语句是最基本且关键的条件判断结构。它根据“某个条件是否为真”来决定程序执行哪一部分代码。其核心机制是:

当条件成立时,执行对应代码块;否则跳过或转入备用分支。

本文将按照「基础语法 → 高级用法 → 常见错误 → 实战演练」的逻辑顺序进行系统梳理,帮助初学者全面掌握 if 分支结构的应用技巧。

1. 核心理解:什么是条件分支?

现实生活中充满了基于条件做出选择的情景:

  • 如果考试得分 ≥ 60,则判定为及格;否则为不及格。
  • 如果天气预报显示下雨,就带伞出门;否则不带。

Python 中的 if 语句正是对这类“判断-执行”逻辑的编程实现,使程序具备智能决策能力。

重要前提:所有用于判断的表达式结果必须为布尔值(True 或 False)

  • True:表示条件满足,进入该分支并执行相应代码
  • False:表示条件不满足,跳过当前分支

2. 基础语法详解:单分支、双分支与多分支

Python 使用缩进(推荐4个空格)来界定代码块的归属关系,这是语法强制要求,不可省略或混用制表符与空格。

(1)单分支结构:if(仅在条件成立时执行)

语法格式如下:

if 条件表达式:
    代码块  # 必须缩进,仅当条件为 True 时执行
后续代码(无缩进):无论条件如何都会执行

说明:

  • 条件表达式:任何能返回布尔结果的操作,如比较运算、逻辑判断等
  • 代码块:必须使用统一风格的缩进(建议4空格),否则会引发语法错误

示例:判断年龄是否达到成年标准

age = 18
if age >= 18:
    print("你已成年,可独立办理业务")
print("程序结束")
你已成年,可独立办理业务
程序结束

(2)双分支结构:if-else(二者必选其一)

语法格式:

if 条件表达式:
    代码块 1  # 条件为 True 时执行
else:
    代码块 2  # 条件为 False 时执行
后续代码:执行完任一分支后继续运行

核心特点:两个分支中必定有一个被执行,不存在都跳过的情况。

示例:判断学生成绩是否及格

score = 58
if score >= 60:
    print("成绩及格,继续加油!")
else:
    print("成绩不及格,需要补考!")
成绩不及格,需要补考!

(3)多分支结构:if-elif-else(多个选项中选一个)

适用于多种分类场景,语法结构如下:

if 条件1:
    代码块1
elif 条件2:
    代码块2
elif 条件3:
    代码块3
...
else:
    代码块N  # 可选

执行规则:

  • 按从上至下的顺序逐一判断条件
  • 一旦某条件为 True,执行对应代码块后立即退出整个分支结构,不再检查后续条件
  • else 是可选的;若所有条件均不成立且无 else,则整个分支不执行任何操作

示例:根据分数划分等级

score = 85
if score >= 90:
    print("优秀")
elif score >= 80:  # 此处隐含了 score < 90
    print("良好")
elif score >= 60:  # 隐含 score < 80
    print("及格")
else:              # 即 score < 60
    print("不及格")
良好

常见误区提醒:条件顺序至关重要!

若将范围较大的条件放在前面,可能导致更具体的条件永远无法触发:

score = 85
if score >= 60:      # 85 满足此条件,直接执行并跳出
    print("及格")
elif score >= 80:   # 不会被执行!
    print("良好")
elif score >= 90:
    print("优秀")

输出结果为“及格”,显然不符合预期。因此应遵循由高到低或由具体到宽泛的排序原则。

(4)嵌套分支结构:if 中包含 if(处理复合条件)

当一个条件的判断依赖于另一个条件的结果时,可使用嵌套方式。

语法结构示意:

if 外层条件:
    外层代码块
    if 内层条件:
        内层代码块1
    else:
        内层代码块2
else:
    外层备选代码块

执行逻辑:内层分支仅在外层条件为 True 的前提下才会被评估。

示例:判断用户是否为 VIP 且余额是否充足

is_vip = True
balance = 300
if is_vip:
    print("欢迎VIP用户!")
    if balance >= 500:
        print("可享受高端服务")
    else:
        print("余额不足,需充值后享受高端服务")
else:
    print("普通用户,可升级VIP享受更多权益")

运行结果:

欢迎VIP用户!
余额不足,需充值后享受高端服务

三、条件表达式:简化 if-else(三元运算符)

在进行“二选一赋值”时,可以使用条件表达式来替代传统的 if-else 结构,使代码更加简洁明了。

语法格式:
变量 = 表达式1 if 条件 else 表达式2

该写法在逻辑上等价于以下完整结构:

if 条件:
    变量 = 表达式1
else:
    变量 = 表达式2

示例一:求两个数的最大值

a = 10
b = 20
max_num = a if a > b else b  # 因为 a > b 不成立,所以 max_num 被赋值为 b
print(max_num)  # 输出:20

示例二:根据年龄判断是否成年并返回提示语

age = 17
tip = "成年" if age >= 18 else "未成年"
print(tip)  # 输出:未成年

注意:
条件表达式仅适用于简单的二选一赋值场景。若涉及多行操作或复杂逻辑控制,仍应使用标准的 if-else 语句结构。

四、if 的判断条件类型(关键!)

if 语句后的条件表达式最终必须返回布尔值(True 或 False)。常见的条件类型包括以下四类:

1. 布尔值直接判断(True/False)

直接使用布尔变量作为判断依据。

flag = True
if flag:
    print("条件成立")  # 执行

2. 比较运算(最常用)

通过比较运算符判断两个值之间的关系,结果为布尔类型。

运算符 含义 示例 结果
== 等于(注意是两个=) 5 == 5 True
!= 不等于 5 != 3 True
> 大于 5 > 10 False
< 小于 5 < 10 True
>= 大于等于 5 >= 5 True
<= 小于等于 5 <= 3 False

示例:判断是否为闰年(简单版:能被4整除)

year = 2024
if year % 4 == 0:
    print(f"{year} 是闰年")  # 输出:2024 是闰年

3. 逻辑运算(组合多个条件)

利用逻辑运算符将多个简单条件组合,形成更复杂的判断逻辑。

运算符 含义 逻辑规则(短路特性)
and 逻辑与 所有条件都为 True 才返回 True;任意一个为 False 则整体为 False(前项为 False 时不执行后项)
or 逻辑或 只要有一个为 True 就返回 True;全部为 False 才返回 False(前项为 True 时不执行后项)
not 逻辑非 取反操作(True 变 False,False 变 True)

示例:判断是否为「18-30岁的VIP用户」

age = 25
is_vip = True
if age >= 18 and age <= 30 and is_vip:
    print("符合活动参与条件")  # 执行

短路特性示例:

# and 短路:前面条件为 False,后续表达式不会被执行
a = 5
if a > 10 and print("执行了"):  # a > 10 为 False,因此 print 不会执行
    pass  # 无输出

# or 短路:前面条件为 True,后续表达式不会被执行
b = 20
if b > 10 or print("执行了"):  # b > 10 为 True,因此 print 不会执行
    pass  # 无输出

4. 空值判断(隐式布尔值)

Python 中某些特定的“空”或“零”值在条件判断中会被自动视为 False,其余则视为 True。

隐式被视为 False 的值:

None

""
(空字符串)、
[]
(空列表)、
{}
(空字典)、
()
(空元组)

隐式被视为 True 的值:
非空字符串、非空容器(如列表、字典、元组)、非零数值等。

示例:判断用户输入是否为空

name = input("请输入姓名:")
if name:  # 等价于 if len(name) > 0,非空字符串 → True
    print(f"欢迎你,{name}")
else:
    print("姓名不能为空!")

示例:判断列表是否有元素

nums = [1, 2, 3]
if nums:  # 非空列表 → True
    print("列表有元素")
else:
    print("列表为空")

五、常见误区与注意事项(避坑关键!)

1. 缩进错误(最常见)

Python 依赖缩进来定义代码块。常见的问题包括:

  • 忘记缩进:导致代码不属于 if 块,可能引发 IndentationError 或逻辑错误。
  • 缩进不一致:混用空格和制表符,Python 会抛出
IndentationError

错误示例:

if age >= 18:
print("成年")  # 未缩进,报错 IndentationError

正确示例:

if age >= 18:
    print("成年")  # 使用 4 个空格缩进,正确

2. 混淆赋值(=)和比较(==)

这是初学者常犯的语法错误:

  • =
    :赋值运算符,用于给变量赋值(如
    a = 5
  • ==
    :比较运算符,用于判断两个值是否相等(如
    a == 5

错误示例:

if age = 18:  # 使用了 =,试图进行赋值,语法错误
    print("成年")

正确示例:

if age == 18:  # 使用 == 进行比较,正确
    print("成年")

3. 多分支条件的顺序问题

如前所述,多分支结构在执行时遵循“从上到下依次判断,一旦满足条件即执行并退出”的原则。因此,应将限制更严格、优先级更高的条件置于前面。

错误示例:

score = 95
if score >= 60:
    print("及格")  # 95 满足此条件,直接执行,后续分支被跳过
elif score >= 90:
    print("优秀")  # 此分支永远不会被执行

正确示例:

score = 95
if score >= 90:
    print("优秀")  # 先判断高分段,逻辑正确
elif score >= 60:
    print("及格")

4. else 与最近 if 的匹配规则

在嵌套结构中,else 总是与“最近的尚未匹配的 if”进行配对,Python 不依赖括号来区分代码块层级,而是通过缩进控制。

示例:嵌套中的 else 匹配关系

if a > 10:
    if b > 20:
        print("A")
    else:  # 此 else 属于内层 if b > 20
        print("B")
{}

5. 逻辑运算符的短路特性引发的问题

当使用 andor 时,若前一个表达式已能确定整体结果,则后续表达式不会被执行(即“短路”)。如果后面的表达式包含副作用(如变量修改、输出操作),可能导致意料之外的行为。

示例:

x = 5
if x > 10 and (x := x + 10):  # x > 10 为 False,右侧不执行
    pass
print(x)  # 输出 5,x 未被修改

六、实战练习(巩固理解)

练习 1:判断是否为闰年(完整逻辑)

闰年的判定规则如下:

  • 能被 4 整除但不能被 100 整除;或
  • 能被 400 整除。
year = 2000
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print(f"{year} 是闰年")
else:
    print(f"{year} 是平年")

练习 2:三角形类型判断

根据输入的三条边长,判断其构成的是等边三角形、等腰三角形、普通三角形,还是无法构成三角形。

a = 3
b = 3
c = 5

# 判断能否构成三角形:任意两边之和大于第三边
if a + b > c and a + c > b and b + c > a:
    if a == b == c:
        print("等边三角形")
    elif a == b or a == c or b == c:
        print("等腰三角形")
    else:
        print("普通三角形")
else:
    print("无法构成三角形")

练习 3:会员折扣金额计算

设定以下折扣规则:

  • 普通会员:消费满 100 元减 20 元,不满则无优惠;
  • VIP 会员:满 50 元减 20 元,不满 50 元打 9 折。
is_vip = True
consume = 60  # 当前消费金额

if is_vip:
    if consume >= 50:
        pay = consume - 20
    else:
        pay = consume * 0.9
else:
    pay = consume - 20 if consume >= 100 else consume

print(f"最终应付:{pay} 元")  # 输出:40.0 元

七、总结

if 语句的核心机制在于“条件判断决定是否执行对应代码块”,掌握以下关键点有助于避免常见错误:

  • 语法结构演进:从单分支(if)→ 双分支(if-else)→ 多分支(if-elif-else)→ 嵌套结构(if 中包含 if);
  • 缩进规范:必须统一使用 4 个空格,缩进决定了代码块的归属;
  • 条件表达式:最终需返回布尔值(True/False),支持比较运算、逻辑运算和空值判断;
  • 简化写法:对于简单的二选一赋值场景,可使用条件表达式(三元操作)提升可读性;
  • 避坑要点:注意缩进错误、赋值=与相等判断==混淆、多分支顺序不当、以及逻辑运算的短路副作用。

熟练掌握上述内容后,即可应对 Python 中绝大多数条件控制需求。建议结合实际场景加强练习,例如用户登录验证、成绩等级划分、促销活动金额计算等,以加深理解和应用能力。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Python入门 python balance print score

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 17:05