专栏:Python 零基础全套入门教程 🎯 本章定位:程序实现分支逻辑的核心,让代码拥有判断能力,是业务逻辑、数据过滤、交互程序必备语法,后续函数、爬虫、自动化脚本大量依赖 if 判断。
✅ 学习目标
- 理解条件测试的本质:布尔值 True / False
- 熟练使用 if、if‑else、if‑elif‑else 分支结构
- 掌握比较运算符、逻辑运算符 and/or/not
- 学会判断列表是否为空、成员判断 in /not in
- 规避 if 语句常见缩进、多条件判断易错坑
一、条件测试基础
所有 if 语句的核心,都是条件测试表达式,表达式运行结果只有两种:True(条件成立)、False(条件不成立)。Python 拿到布尔结果,决定执行哪一段代码。
1.1 比较运算符
| 运算符 | 说明 |
|---|---|
== | 判断相等,注意不是赋值= |
!= | 判断不相等 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
示例代码:
age = 18 print(age == 18) # True print(age != 20) # True print(age > 20) # False易错点:=是赋值,==才是相等判断,新手非常容易写混。字符串比较区分大小写。
name = "Python" print(name == "python") # False,大小写不一样1.2 逻辑运算符 and /or/not
and:两边条件同时为 True,整体结果才为 Trueor:任意一个条件为 True,整体结果为 Truenot:取反,True 变 False,False 变 True
age = 22 # and示例 print(age >18 and age <30) # True # or示例 score = 59 print(score <60 or score >=90) # True # not示例 is_login = False print(not is_login) # True1.3 成员运算符 in /not in
判断某个元素是否存在于列表、字符串等序列当中。
fruits = ["apple","banana","orange"] print("apple" in fruits) # True print("grape" not in fruits) # True1.4 Python 中视为 False 的值
除了明确的 False,下面这些对象在条件测试中会被当作假:0、""空字符串、[]空列表、()空元组、{}空字典、None
if 0: print("不会执行") if []: print("不会执行") if "hello": print("非空字符串为真")二、if 分支语句结构
Python 依靠缩进区分代码块,if 后面必须加冒号:,冒号换行之后缩进的代码,才属于 if 内部逻辑。
2.1 单 if 语句
条件成立,执行内部代码;不成立直接跳过。
age = 20 if age >= 18: print("成年人,可以浏览内容")2.2 if‑else 二选一逻辑
条件成立执行 if 块,否则执行 else 块,两个分支只会走其中一个。
age =16 if age >=18: print("成年") else: print("未成年")2.3 if‑elif‑else 多分支判断
适合多种互斥场景,从上往下依次判断,命中一个条件就结束整个结构。
注意:elif 可以写多个;else 是可选,可以省略。
score = 85 if score >=90: print("优秀") elif score >=80: print("良好") elif score >=60: print("及格") else: print("不及格")小提示:条件顺序很关键,范围大的条件不要写在前面,否则后面逻辑永远不会执行。
错误示范:
score =95 if score >=60: print("及格") elif score >=90: print("优秀") # 永远执行不到2.4 嵌套 if 语句
if 内部还可以继续写 if,用于多层判断。
age = 22 has_id = True if age >=18: if has_id: print("允许进入网吧") else: print("年龄达标,但没有身份证") else: print("未成年禁止进入")三、实战常用场景
场景 1:判断列表是否为空
实际开发经常需要先判断列表有没有数据,避免后续遍历报错。
user_list = [] if user_list: for user in user_list: print(user) else: print("当前没有用户数据")场景 2:结合 in 做过滤
keywords = ["bug","error"] msg = "程序出现error,请重启" if "error" in msg: print("检测到报错信息")场景 3:多条件综合判断
username = "admin" password = "123456" if username == "admin" and password == "123456": print("登录成功") else: print("账号密码错误")四、if 语句高频易错总结
- 忘记写冒号
:,报语法错误; - 缩进混乱:同一个代码块缩进空格数量必须统一,推荐 4 个空格;
- 将赋值
=误写成判断==; - elif 条件顺序颠倒,导致分支失效;
- 用
=判断字符串是否在列表,应该用in; - 多个独立 if 和 if‑elif 混淆:多个 if 会全部判断;elif 命中就停止。
# 多个独立if,所有条件都会校验 num = 5 if num > 0: print("大于0") if num > 2: print("大于2") # if‑elif,只会执行一条 if num >0: print("大于0") elif num>2: print("大于2") #不会执行📝本章实战习题
基础题
- 定义变量 score,接收分数;使用 if‑elif‑else 输出评级:≥90 优秀,80‑89 良好,60‑79 及格,小于 60 不及格。
- 定义列表 names = ["张三","李四","王五"],输入一个名字,判断名字是否在列表,打印 “存在” 或者 “不存在”。
- 定义 age 变量,如果 age 大于等于 18 打印成年,否则打印未成年。
进阶题
- 用户输入用户名和密码,用户名等于 root,密码等于 666888,打印登录成功;否则打印账号密码错误。
- 写程序:判断年份是否闰年。规则:能被 4 整除且不能被 100 整除,或者能被 400 整除。
思考题
- 有列表 data = [12,34,"",0,False],遍历列表,使用 if 过滤,只打印在条件测试中为 True 的元素。
✅参考答案
#习题1 score = 78 if score >=90: print("优秀") elif score >=80: print("良好") elif score >=60: print("及格") else: print("不及格") #习题2 names = ["张三","李四","王五"] input_name = "李四" if input_name in names: print("存在") else: print("不存在") #习题3 age =20 if age >=18: print("成年") else: print("未成年") #习题4 user = "root" pwd = "666888" if user == "root" and pwd == "666888": print("登录成功") else: print("账号密码错误") #习题5 year = 2026 if (year %4 ==0 and year %100 !=0) or year%400 ==0: print("闰年") else: print("平年") #习题6 data = [12,34,"",0,False] for item in data: if item: print(item)💖点赞 + 收藏 + 关注,持续更新 Python 零基础全套教程,下一章学习字典 Dict。