跳到主要内容

条件语句详解

让程序学会做判断和选择

条件语句概述

条件语句 让程序根据不同情况执行不同代码。

# 生活中的条件判断
如果 天下雨:
带伞
否则:
不带伞

# Python中的条件语句
if is_raining:
bring_umbrella()
else:
no_umbrella()

if语句

基本语法

if 条件:
执行的代码 # 缩进4个空格

示例

age = 20

if age >= 18:
print("你是成年人")

# 条件为True时执行
# 条件为False时跳过

多条语句

score = 85

if score >= 60:
print("恭喜,你及格了!")
print("继续努力!")
print("加油!")

if-else语句

基本语法

if 条件:
条件为True时执行
else:
条件为False时执行

示例

age = 15

if age >= 18:
print("你是成年人")
else:
print("你是未成年人")

# 输出:你是未成年人

奇偶判断

num = int(input("请输入一个整数:"))

if num % 2 == 0:
print(f"{num}是偶数")
else:
print(f"{num}是奇数")

if-elif-else语句

基本语法

if 条件1:
条件1True时执行
elif 条件2:
条件2True时执行
elif 条件3:
条件3True时执行
else:
以上条件都不满足时执行

成绩等级判断

score = int(input("请输入分数:"))

if score >= 90:
print("优秀 A")
elif score >= 80:
print("良好 B")
elif score >= 70:
print("中等 C")
elif score >= 60:
print("及格 D")
else:
print("不及格 F")

注意事项

# 条件按顺序检查,第一个满足的执行后就结束
score = 95

if score >= 60:
print("及格") # 这个会执行
elif score >= 90:
print("优秀") # 这个不会执行!

# 正确写法:条件从大到小
if score >= 90:
print("优秀")
elif score >= 60:
print("及格")

嵌套条件

基本语法

if 外层条件:
if 内层条件:
内外层都满足时执行
else:
外层满足、内层不满足时执行
else:
外层不满足时执行

示例:入场验证

has_ticket = True
age = 15

if has_ticket:
if age >= 18:
print("成人票入场")
else:
print("儿童票入场")
else:
print("请先购票")

避免过深嵌套

# 不好的写法:嵌套太深
if a:
if b:
if c:
if d:
print("太深了!")

# 好的写法:使用逻辑运算符
if a and b and c and d:
print("清晰多了")

# 或使用提前返回
def check():
if not a:
return
if not b:
return
if not c:
return
print("通过检查")

条件表达式

三元表达式

# 语法:值1 if 条件 else 值2
age = 20
status = "成年" if age >= 18 else "未成年"
print(status) # 成年

# 等价于
if age >= 18:
status = "成年"
else:
status = "未成年"

实际应用

# 取绝对值
x = -5
abs_x = x if x >= 0 else -x

# 取最大值
a, b = 10, 20
max_val = a if a > b else b

# 默认值
name = input("名字:") or "匿名"

条件判断技巧

布尔值判断

# 简洁写法
is_active = True

if is_active: # 不用写 is_active == True
print("激活")

if not is_active: # 不用写 is_active == False
print("未激活")

判断空值

# 判断是否为空
data = []

# 简洁写法
if not data:
print("列表为空")

# 避免
if data == []: # 不够优雅
print("列表为空")

if len(data) == 0: # 也可以但不必要
print("列表为空")

判断None

result = None

# 推荐:用is
if result is None:
print("没有结果")

# 不推荐
if result == None:
print("没有结果")

链式比较

age = 25

# Python特有的链式比较
if 18 <= age < 60:
print("工作年龄")

# 等价于
if age >= 18 and age < 60:
print("工作年龄")

match语句(Python 3.10+)

基本语法

match 变量:
case1:
处理值1
case2:
处理值2
case _:
默认处理

示例

command = input("请输入命令:")

match command:
case "start":
print("启动程序")
case "stop":
print("停止程序")
case "restart":
print("重启程序")
case _:
print("未知命令")

模式匹配

# 匹配多个值
match day:
case "Saturday" | "Sunday":
print("周末")
case _:
print("工作日")

# 匹配结构
point = (1, 2)
match point:
case (0, 0):
print("原点")
case (x, 0):
print(f"在x轴上,x={x}")
case (0, y):
print(f"在y轴上,y={y}")
case (x, y):
print(f"坐标({x}, {y})")

实战示例

示例1:登录验证

correct_username = "admin"
correct_password = "123456"

username = input("用户名:")
password = input("密码:")

if username == correct_username:
if password == correct_password:
print("登录成功!")
else:
print("密码错误!")
else:
print("用户名不存在!")

示例2:计算器

num1 = float(input("请输入第一个数:"))
operator = input("请输入运算符(+ - * /):")
num2 = float(input("请输入第二个数:"))

if operator == "+":
result = num1 + num2
elif operator == "-":
result = num1 - num2
elif operator == "*":
result = num1 * num2
elif operator == "/":
if num2 != 0:
result = num1 / num2
else:
result = "错误:除数不能为0"
else:
result = "错误:不支持的运算符"

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

示例3:闰年判断

year = int(input("请输入年份:"))

# 闰年规则:
# 能被4整除且不能被100整除
# 或者能被400整除

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(f"{year}年是闰年")
else:
print(f"{year}年不是闰年")

常见错误

缩进错误

# 错误:缩进不正确
if True:
print("没有缩进") # IndentationError

# 正确
if True:
print("正确缩进")

条件后忘记冒号

# 错误
if age >= 18 # SyntaxError: 缺少冒号
print("成年")

# 正确
if age >= 18:
print("成年")

用=代替==

# 错误:赋值而非比较
if age = 18: # SyntaxError
print("18岁")

# 正确
if age == 18:
print("18岁")

练习

练习1:判断正负零

# 判断输入的数是正数、负数还是零
num = float(input("请输入一个数:"))

# 参考答案
if num > 0:
print("正数")
elif num < 0:
print("负数")
else:
print("零")

练习2:BMI计算

# 计算BMI并给出建议
# BMI = 体重(kg) / 身高(m)^2
# BMI < 18.5:偏瘦
# 18.5 <= BMI < 24:正常
# 24 <= BMI < 28:偏胖
# BMI >= 28:肥胖

weight = float(input("体重(kg):"))
height = float(input("身高(m):"))

# 参考答案
bmi = weight / height ** 2
print(f"BMI: {bmi:.2f}")

if bmi < 18.5:
print("偏瘦")
elif bmi < 24:
print("正常")
elif bmi < 28:
print("偏胖")
else:
print("肥胖")

本章小结

  1. if语句:基本条件判断
  2. if-else:二选一判断
  3. if-elif-else:多条件判断
  4. 嵌套条件:条件中的条件
  5. 三元表达式:简洁的条件赋值
  6. match语句:Python 3.10+的模式匹配

下一步

学会了条件判断,下一章学习循环语句。

→ 继续阅读:17-循环语句详解