布尔类型
用于表示真(True)和假(False)的数据类型,是判断语句的基础
布尔类型(bool)只有两个值:True 和 False。True 表示条件成立(真),False 表示条件不成立(假)。
1 2 3 4 5 6
| is_student = True is_teacher = False print(type(is_student)) print(is_student) print(is_teacher)
|
布尔值可以通过比较运算得到,也可以由 bool() 函数将其他数据类型转换而来:
1 2 3 4 5 6 7 8 9 10 11
| print(10 > 5) print(10 < 5)
print(bool(1)) print(bool(0)) print(bool("hello")) print(bool("")) print(bool([])) print(bool(None))
|
比较运算符
比较运算符是判断语句中的核心工具,所有比较运算的结果都是布尔值(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) print(a != b) print(a > b) print(a < b) print(a >= 10) print(b <= 15)
print("abc" == "abc") print("abc" < "abd")
|
if 语句
if 语句是判断语句中最基础的形式,当条件为 True 时,执行缩进的代码块。
- if 语句的基本格式
1 2 3 4 5 6 7 8 9
| """ if 条件: 条件成立时执行的代码 注意:代码块前面有4个空格的缩进(或一个Tab键) Python通过缩进来判断代码的归属关系 """ age = 18 if age >= 18: print("你已成年")
|
- if 语句的缩进规则
1 2 3 4 5 6 7 8 9 10 11 12
|
score = 85 if score >= 60: print("成绩合格") print("恭喜你通过考试") print("程序结束")
|
- 条件不成立时
1 2 3 4 5 6 7
| age = 16 if age >= 18: print("你已成年") print("程序继续")
|
if-else 语句
条件成立执行if代码块,不成立则执行else代码块
if-else 语句提供了两种分支路径,无论条件是否成立,总有一块代码会被执行。
- 基本格式
1 2 3 4 5 6 7 8 9 10 11 12 13
| """ if 条件: 条件成立时执行的代码 else: 条件不成立时执行的代码 """ age = 16 if age >= 18: print("你已成年,可以进入网吧") else: print("你未成年,不能进入网吧")
|
- 实际应用示例
1 2 3 4 5 6 7 8
| num = 7 if num % 2 == 0: print(f"{num} 是偶数") else: print(f"{num} 是奇数")
|
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 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("不及格")
|
- elif 可以有多个,else 可以省略
1 2 3 4 5 6 7 8 9 10
| money = 30 if money >= 100: print("可以买大餐") elif money >= 50: print("可以买快餐") elif money >= 20: print("可以买小吃")
|
- 将 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) print(True and False) print(True or False) print(False or False) print(not True) print(not False)
|
- and 运算符(与)
1 2 3 4 5 6 7 8
| age = 25 if age >= 18 and age <= 60: print("你是成年人") else: print("你是未成年人或老年人")
|
- or 运算符(或)
1 2 3 4 5 6 7 8 9
| identity = "学生" age = 30 if identity == "学生" or age >= 65: print("可以享受优惠") else: print("不满足优惠条件")
|
- not 运算符(非)
1 2 3 4 5 6 7 8
| is_vip = False if not is_vip: print("你不是VIP会员,需要付费观看") else: print("VIP会员,免费观看")
|
- 多个逻辑运算符组合
1 2 3 4 5 6 7 8 9
|
year = 2024 if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): print(f"{year} 年是闰年") else: print(f"{year} 年不是闰年")
|
嵌套判断
在一个判断语句内部再嵌套另一个判断语句,用于更复杂的条件判断
当条件需要分层判断时,可以在 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
| """ 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 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折优惠")
|
嵌套层次不要太多(建议不超过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 """
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)
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 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("无效的星期数")
|
- 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
| 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 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
| """ 根据输入的体重(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 系列文章
- Python Study Note
- Python 函数使用(四)
- Python 判断语句(二)
- Python 基础语法(一)
- Python 异常处理(七)
- Python 循环语句(三)
- Python 数据容器(五)
- Python 文件基础操作(六)
- Python 模块与包(八)
- Python 类型注解(十)
- Python 面向对象(九)重点
- Python 高阶技巧(十一)