Python 编程:从零基础到精通
第 6 课 - 条件判断(if-elif-else)
所属模块:模块二:控制流与循环 难度: beginner 标签: if-statement, conditional
学习目标
完成本课学习后,你将能够:
- 理解并编写使用
if语句的基本条件判断结构。 - 掌握比较运算符(
==,!=,>,<,>=,<=)和逻辑运算符(and,or,not)的使用。 - 使用
if-elif-else结构处理多重条件分支。 - 理解
else语句作为默认/兜底分支的作用。 - 编写清晰、嵌套合理的条件判断代码。
核心概念
在编程中,我们经常需要程序根据不同的情况做出不同的决定,就像我们日常生活一样:"如果(if)下雨,我就带伞;否则(else),我就不带。" Python 用 if, elif, else 关键字来实现这种逻辑。
-
if语句:最简单的判断 它检查一个条件是否为True。如果为真,则执行其缩进的代码块。temperature = 35 if temperature > 30: print("天气很热,开空调!") -
if-else结构:二选一 当条件为True时执行一段代码,否则执行另一段代码。score = 85 if score >= 60: print("及格了!") else: print("不及格,需要补考。") -
if-elif-else结构:多重选择 当有多个互斥的条件需要检查时使用。elif是else if的缩写。程序会从上到下依次检查条件,一旦某个条件为True,就执行对应的代码块,然后跳出整个if-elif-else结构。else是可选的,用于处理所有条件都不满足的情况。weather = "sunny" if weather == "rainy": print("带伞出门") elif weather == "cloudy": print("可能下雨,最好带伞") elif weather == "sunny": print("阳光明媚,戴太阳镜") else: print("查看天气预报再决定")- 关键点:代码的缩进(通常用4个空格或1个Tab)决定了哪些代码属于哪个
if/elif/else分支。这是Python语法的重要组成部分。
- 关键点:代码的缩进(通常用4个空格或1个Tab)决定了哪些代码属于哪个
-
条件表达式 用于
if后面的"条件"是由比较运算符和逻辑运算符组成的表达式,其结果必须是布尔值(True或False)。- 比较运算符:
==(等于),!=(不等于),>,<,>=,<= - 逻辑运算符:
and(与),or(或),not(非)age = 25 has_ticket = True if age >= 18 and has_ticket: print("允许进入影院") if not has_ticket: print("请先购票")
- 比较运算符:
代码示例
示例1:成绩等级判断器 一个经典的多重条件判断示例。
# 获取用户输入的成绩,并转换为浮点数
try:
score = float(input("请输入你的考试成绩 (0-100): "))
except ValueError:
print("输入错误,请输入一个数字!")
exit() # 如果输入不合法,退出程序
# 开始条件判断
if score > 100 or score < 0:
print("输入的成绩无效,应在0到100之间。")
elif score >= 90:
print("优秀!")
elif score >= 80:
print("良好!")
elif score >= 70:
print("中等。")
elif score >= 60:
print("及格。")
else:
print("不及格,需要努力。")
print("成绩查询结束。")
示例2:嵌套的 if 语句 在一个条件判断内部,还可以进行进一步的判断。
# 模拟一个简单的密码验证器
correct_password = "python123"
user_input = input("请输入密码: ")
if user_input == correct_password:
print("密码正确!")
# 嵌套一个if,检查密码强度(这里仅作演示)
if len(correct_password) > 8:
print("密码强度:高")
else:
print("密码强度:一般")
else:
print("密码错误!")
# 可以再嵌套,比如记录错误次数等,这里简化处理
print("请重新尝试。")
示例3:处理复杂条件与空值 结合使用逻辑运算符,并注意处理可能为空的变量。
username = "" # 模拟从某处获取的用户名,可能为空
# 检查用户名是否有效
if username: # 在Python中,非空字符串布尔值为True
print(f"欢迎回来,{username}!")
# 进一步检查是否为管理员
if username.lower() == "admin":
print("您拥有管理员权限。")
else:
print("游客你好!请登录。")
# 综合示例:判断闰年
year = 2024
is_leap = False # 先假设不是闰年
# 闰年规则:能被4整除但不能被100整除,或者能被400整除
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
is_leap = True
if is_leap:
print(f"{year} 年是闰年。")
else:
print(f"{year} 年不是闰年。")
实践练习
练习1:奇偶数判断器
- 要求:编写一个程序,从用户处获取一个整数,判断它是奇数还是偶数,并输出结果。
- 提示:使用取模运算符
%,一个数除以2的余数为0是偶数。 - 预期输出示例:
请输入一个整数: 7 7 是奇数。请输入一个整数: 12 12 是偶数。
练习2:年龄阶段划分
- 要求:编写程序,根据用户输入的年龄,将其划分为"儿童(0-12)"、"青少年(13-17)"、"成年人(18-64)"或"老年人(65+)",并输出对应的阶段名称。
- 提示:注意年龄边界值的处理(例如,13岁应属于"青少年")。
- 预期输出示例:
请输入你的年龄: 15 你正处于青少年阶段。
练习3:购物折扣计算
- 要求:编写一个收银程序。用户输入购物总金额。根据以下规则计算折后价并输出:
- 金额 >= 1000元,打8折。
- 金额 >= 500元且 < 1000元,打9折。
- 金额 >= 200元且 < 500元,打95折。
- 金额 < 200元,不打折。
- 预期输出示例:
请输入购物总金额(元): 800 符合9折优惠,实付金额为: 720.0 元。
常见错误
-
忘记写冒号
::if,elif,else后面必须紧跟一个英文冒号,这是语法要求。- 错误:
if x > 5 - 正确:
if x > 5:
- 错误:
-
缩进错误:属于同一个代码块的语句必须保持相同的缩进级别。
- 错误:
if True: print("这行代码不在if块里") # 缺少缩进,会报IndentationError- 正确:
if True: print("这行代码在if块里") # 与上一行同级缩进 -
混淆
=和==:=是赋值运算符,==是比较运算符。- 错误:
if x = 5:(尝试将5赋值给x并判断,语法错误) - 正确:
if x == 5:(判断x是否等于5)
- 错误:
-
条件顺序错误:在
if-elif链中,条件的顺序很重要。更具体或范围更小的条件应放在前面。- 错误示例(成绩判断):
if score >= 60: print("及格") elif score >= 90: # 这个条件永远不会被满足,因为90分也满足 >=60 print("优秀")- 正确顺序:应从高到低判断(
>=90,>=80,>=70,>=60)。
-
忽略边界值:在处理范围时,要仔细考虑等于边界值的情况(例如
>=和>的区别)。
小结
本课我们学习了如何让程序做出决策:
if:执行一个基本的条件判断。elif:检查多个互斥条件中的其他可能性(else if的简写)。else:捕获所有未被前述条件匹配的情况,作为默认分支。- 条件表达式:由比较运算符(
==,!=,>,<等)和逻辑运算符(and,or,not)组成,结果必须是布尔值。 - 缩进:在Python中,缩进定义了代码块,是语法的一部分,必须严格遵守。
掌握条件判断是编写任何有意义程序的基础,它赋予了程序"思考"和应对不同情况的能力。接下来,我们将学习循环结构,让程序能够重复执行任务。