布尔类型

用于表示真(True)和假(False)的数据类型,是判断语句的基础

布尔类型(bool)只有两个值:TrueFalse。True 表示条件成立(真),False 表示条件不成立(假)。

1
2
3
4
5
6
# 布尔类型的定义
is_student = True
is_teacher = False
print(type(is_student)) # 输出 <class 'bool'>
print(is_student) # 输出 True
print(is_teacher) # 输出 False

布尔值可以通过比较运算得到,也可以由 bool() 函数将其他数据类型转换而来:

1
2
3
4
5
6
7
8
9
10
11
# 通过比较得到布尔值
print(10 > 5) # 输出 True
print(10 < 5) # 输出 False

# bool() 转换
print(bool(1)) # 输出 True (非零数字为True)
print(bool(0)) # 输出 False (零为False)
print(bool("hello")) # 输出 True (非空字符串为True)
print(bool("")) # 输出 False (空字符串为False)
print(bool([])) # 输出 False (空列表为False)
print(bool(None)) # 输出 False (None为False)

比较运算符

用于比较两个值之间的关系,返回布尔类型的结果

比较运算符是判断语句中的核心工具,所有比较运算的结果都是布尔值(True 或 False)。

运算符 描述 示例
== 等于:比较两个值是否相等 a == b
!= 不等于:比较两个值是否不相等 a != b
> 大于:左边是否大于右边 a > b
< 小于:左边是否小于右边 a < b
>= 大于等于:左边是否大于或等于右边 a >= b
<= 小于等于:左边是否小于或等于右边 a <= b
1
2
3
4
5
6
7
8
9
10
11
12
13
a = 10
b = 20

print(a == b) # 输出 False
print(a != b) # 输出 True
print(a > b) # 输出 False
print(a < b) # 输出 True
print(a >= 10) # 输出 True
print(b <= 15) # 输出 False

# 字符串也可以使用比较运算符(基于ASCII码逐字符比较)
print("abc" == "abc") # 输出 True
print("abc" < "abd") # 输出 True

if 语句

如果条件成立,则执行其内部包含的代码块

if 语句是判断语句中最基础的形式,当条件为 True 时,执行缩进的代码块。

  1. if 语句的基本格式
1
2
3
4
5
6
7
8
9
"""
if 条件:
条件成立时执行的代码
注意:代码块前面有4个空格的缩进(或一个Tab键)
Python通过缩进来判断代码的归属关系
"""
age = 18
if age >= 18:
print("你已成年") # 条件成立,输出 你已成年
  1. if 语句的缩进规则
1
2
3
4
5
6
7
8
9
10
11
12
# 缩进必须统一,通常使用4个空格
# 属于if的代码,在if下方保持相同缩进
score = 85
if score >= 60:
print("成绩合格") # 属于 if 代码块
print("恭喜你通过考试") # 属于 if 代码块
print("程序结束") # 不属于 if 代码块,一定会执行

# 输出:
# 成绩合格
# 恭喜你通过考试
# 程序结束
  1. 条件不成立时
1
2
3
4
5
6
7
age = 16
if age >= 18:
print("你已成年") # 条件不成立,不执行
print("程序继续") # 继续执行

# 输出:
# 程序继续

if-else 语句

条件成立执行if代码块,不成立则执行else代码块

if-else 语句提供了两种分支路径,无论条件是否成立,总有一块代码会被执行。

  1. 基本格式
1
2
3
4
5
6
7
8
9
10
11
12
13
"""
if 条件:
条件成立时执行的代码
else:
条件不成立时执行的代码
"""
age = 16
if age >= 18:
print("你已成年,可以进入网吧")
else:
print("你未成年,不能进入网吧")

# 输出:你未成年,不能进入网吧
  1. 实际应用示例
1
2
3
4
5
6
7
8
# 判断一个数是奇数还是偶数
num = 7
if num % 2 == 0:
print(f"{num} 是偶数")
else:
print(f"{num} 是奇数")

# 输出:7 是奇数
1
2
3
4
5
6
7
8
9
# 判断密码是否正确
correct_password = "123456"
input_password = "abcdef"
if input_password == correct_password:
print("密码正确,登录成功")
else:
print("密码错误,请重试")

# 输出:密码错误,请重试

if-elif-else 语句

用于处理多个条件的判断,从上到下依次判断,满足任意一个条件后不再继续

当需要判断多个互斥条件时,使用 if-elif-else 结构。elif 是 “else if” 的缩写。

  1. 基本格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
"""
if 条件1:
条件1成立时执行的代码
elif 条件2:
条件2成立时执行的代码
elif 条件3:
条件3成立时执行的代码
else:
以上条件都不成立时执行的代码
"""
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 70:
print("中等")
elif score >= 60:
print("及格")
else:
print("不及格")

# 输出:良好
# 注:score=85满足score>=80,执行后不再继续往下判断
  1. elif 可以有多个,else 可以省略
1
2
3
4
5
6
7
8
9
10
# 没有else的写法(所有条件都不满足时,什么也不执行)
money = 30
if money >= 100:
print("可以买大餐")
elif money >= 50:
print("可以买快餐")
elif money >= 20:
print("可以买小吃")

# 输出:可以买小吃
  1. 将 input 与判断结合
1
2
3
4
5
6
7
8
9
10
11
"""
判断用户输入的数字范围
注意:input() 返回的是字符串,需要用 int() 转换
"""
num = int(input("请输入一个数字:"))
if num > 0:
print("你输入的是正数")
elif num < 0:
print("你输入的是负数")
else:
print("你输入的是零")

逻辑运算符

用于连接多个条件,构建复合判断语句

当需要同时判断多个条件时,使用逻辑运算符将它们组合起来。

运算符 描述 说明
and 两边条件都为 True,结果才为 True
or 两边条件只要有一个为 True,结果就为 True
not 取反,True 变 False,False 变 True
1
2
3
4
5
6
7
# 逻辑运算结果演示
print(True and True) # 输出 True
print(True and False) # 输出 False
print(True or False) # 输出 True
print(False or False) # 输出 False
print(not True) # 输出 False
print(not False) # 输出 True
  1. and 运算符(与)
1
2
3
4
5
6
7
8
# 判断一个人是否为18~60岁的成年人
age = 25
if age >= 18 and age <= 60:
print("你是成年人")
else:
print("你是未成年人或老年人")

# 输出:你是成年人
  1. or 运算符(或)
1
2
3
4
5
6
7
8
9
# 判断是否有资格享受优惠(学生或65岁以上老人)
identity = "学生"
age = 30
if identity == "学生" or age >= 65:
print("可以享受优惠")
else:
print("不满足优惠条件")

# 输出:可以享受优惠
  1. not 运算符(非)
1
2
3
4
5
6
7
8
# 判断用户是否不是会员
is_vip = False
if not is_vip:
print("你不是VIP会员,需要付费观看")
else:
print("VIP会员,免费观看")

# 输出:你不是VIP会员,需要付费观看
  1. 多个逻辑运算符组合
1
2
3
4
5
6
7
8
9
# 判断年份是否为闰年
# 闰年规则:能被4整除但不能被100整除,或者能被400整除
year = 2024
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
print(f"{year} 年是闰年")
else:
print(f"{year} 年不是闰年")

# 输出:2024 年是闰年

嵌套判断

在一个判断语句内部再嵌套另一个判断语句,用于更复杂的条件判断

当条件需要分层判断时,可以在 if / elif / else 的代码块中继续写判断语句。

  1. 基本嵌套格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
"""
if 外层条件:
if 内层条件:
两层条件都成立时执行的代码
else:
外层成立但内层不成立
else:
外层条件不成立
"""
# 先判断是否有票,再判断是否携带身份证
has_ticket = True
has_id_card = False

if has_ticket:
print("已购票,进入安检")
if has_id_card:
print("身份证核验通过,请进站")
else:
print("未携带身份证,请去办理临时证明")
else:
print("请先去购票")

# 输出:
# 已购票,进入安检
# 未携带身份证,请去办理临时证明
  1. 多层嵌套示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 商场会员等级折扣系统
level = "黄金"
amount = 500

if level == "钻石":
if amount >= 1000:
print("享受8折优惠")
elif amount >= 500:
print("享受8.5折优惠")
else:
print("享受9折优惠")
elif level == "黄金":
if amount >= 1000:
print("享受8.5折优惠")
elif amount >= 500:
print("享受9折优惠")
else:
print("享受9.5折优惠")
else:
print("普通会员,满200享受9.5折优惠")

# 输出:享受9折优惠

嵌套层次不要太多(建议不超过3层),否则代码可读性会变差。可以考虑使用逻辑运算符合并条件来减少嵌套。

三元表达式 (重点)

一种简洁的条件表达式写法,可以在一行内完成简单的条件判断和赋值

三元表达式是 if-else 的简化版本,适用于简单的条件赋值场景。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
"""
格式:结果1 if 条件 else 结果2
如果条件成立,返回结果1;否则返回结果2
"""

# 常规 if-else 写法
age = 20
if age >= 18:
status = "成年"
else:
status = "未成年"
print(status) # 输出 成年

# 使用三元表达式(一行搞定)
status = "成年" if age >= 18 else "未成年"
print(status) # 输出 成年

更多示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 取两个数中的较大值
a, b = 10, 20
max_value = a if a > b else b
print(max_value) # 输出 20

# 判断奇偶
num = 15
result = "偶数" if num % 2 == 0 else "奇数"
print(result) # 输出 奇数

# 判断是否及格
score = 58
print("及格" if score >= 60 else "不及格") # 输出 不及格

match-case 语句(Python 3.10+)

Python 3.10 引入的模式匹配语句,类似其他语言中的 switch-case

match-case 语句用于根据一个值的不同情况执行不同代码,是多分支判断的另一种写法。

  1. 基本格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
"""
match 变量:
case 值1:
执行代码1
case 值2:
执行代码2
case _:
以上都不匹配时执行(_ 相当于默认分支)
"""
# 根据星期几输出不同的活动安排
day = 3
match day:
case 1:
print("星期一:开会")
case 2:
print("星期二:写代码")
case 3:
print("星期三:测试")
case 4:
print("星期四:发布")
case 5:
print("星期五:总结")
case 6 | 7:
print("周末:休息") # 使用 | 匹配多个值
case _:
print("无效的星期数")

# 输出:星期三:测试
  1. match-case 与 if-elif-else 的对比
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 使用 if-elif-else
status_code = 404
if status_code == 200:
message = "成功"
elif status_code == 301 or status_code == 302:
message = "重定向"
elif status_code == 404:
message = "未找到"
elif status_code == 500:
message = "服务器错误"
else:
message = "未知状态"
print(message) # 输出 未找到

# 使用 match-case(更清晰)
match status_code:
case 200:
message = "成功"
case 301 | 302:
message = "重定向"
case 404:
message = "未找到"
case 500:
message = "服务器错误"
case _:
message = "未知状态"
print(message) # 输出 未找到

综合练习

将所学知识融会贯通,通过实际案例巩固判断语句的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 猜数字游戏
"""
随机生成一个1~10之间的数字,让用户猜
根据猜测结果给出不同提示
"""
import random
target = random.randint(1, 10) # 随机生成目标数字
guess = int(input("猜一个1~10之间的数字:"))

if guess < 1 or guess > 10:
print("输入的数字不在范围内!")
elif guess == target:
print("恭喜你,猜对了!")
elif guess > target:
print(f"猜大了,正确答案是 {target}")
else:
print(f"猜小了,正确答案是 {target}")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# BMI 身体质量指数计算
"""
根据输入的体重(kg)和身高(m)计算BMI并给出健康建议
体重过低:BMI < 18.5
正常范围:18.5 <= BMI < 24
超重:24 <= BMI < 28
肥胖:BMI >= 28
"""
weight = float(input("请输入体重(kg):"))
height = float(input("请输入身高(m):"))

if height <= 0 or weight <= 0:
print("输入数据不合法")
else:
bmi = weight / (height ** 2)
print(f"你的BMI值为:{bmi:.1f}")

if bmi < 18.5:
print("体重过低,建议增加营养")
elif bmi < 24:
print("体重正常,请继续保持")
elif bmi < 28:
print("体重超重,建议加强锻炼")
else:
print("肥胖,建议咨询医生并控制饮食")

判断语句是程序逻辑控制的核心。熟练掌握 if / elif / else、逻辑运算符,嵌套判断以及三元运算符,能让你编写出能够根据不同情况做出不同响应的程序。

Python Study Note 系列文章

  1. Python Study Note
  2. Python 函数使用(四)
  3. Python 判断语句(二)
  4. Python 基础语法(一)
  5. Python 异常处理(七)
  6. Python 循环语句(三)
  7. Python 数据容器(五)
  8. Python 文件基础操作(六)
  9. Python 模块与包(八)
  10. Python 类型注解(十)
  11. Python 面向对象(九)重点
  12. Python 高阶技巧(十一)