条件语句详解
让程序学会做判断和选择
条件语句概述
条件语句 让程序根据不同情况执行不同代码。
# 生活中的条件判断
如果 天下雨:
带伞
否则:
不带伞
# 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:
条件1为True时执行
elif 条件2:
条件2为True时执行
elif 条件3:
条件3为True时执行
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 变量:
case 值1:
处理值1
case 值2:
处理值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("肥胖")
本章小结
- if语句:基本条件判断
- if-else:二选一判断
- if-elif-else:多条件判断
- 嵌套条件:条件中的条件
- 三元表达式:简洁的条件赋值
- match语句:Python 3.10+的模式匹配
下一步
学会了条件判断,下一章学习循环语句。
→ 继续阅读:17-循环语句详解