系列文章

Python 从入门到精通

第 5 / 36 篇

从环境安装和基础语法出发,逐步学习工程实践、自动化、数据处理与 Web 开发。

  1. 01
    Python 怎么装、怎么用
  2. 02
    变量、数字和字符串
  3. 03
    列表:把一组数据放在一起
  4. 04
    元组、集合和字典
  5. 05
    条件判断:让程序做选择正在阅读
  6. 06
    循环:重复的事交给程序
  7. 07
    函数:把代码整理成可复用的块
  8. 08
    模块与包:拆分你的程序
  9. 09
    输入、输出与字符串格式化
  10. 10
    文件读写:保存程序的数据
  11. 11
    异常处理:程序出错时怎么办
  12. 12
    基础阶段练习:命令行记账本
  13. 13
    类和对象:面向对象入门
  14. 14
    继承、组合与特殊方法
  15. 15
    迭代器与生成器
  16. 16
    列表推导式与生成器表达式
  17. 17
    装饰器:给函数增加能力
  18. 18
    上下文管理器与 with
  19. 19
    类型标注与 dataclass
  20. 20
    正则表达式:从文本中找规律
  21. 21
    日期、时间与时区
  22. 22
    日志与调试
  23. 23
    虚拟环境与依赖管理
  24. 24
    测试:让修改不再提心吊胆
  25. 25
    网络请求:用 Python 调用 API
  26. 26
    网页解析与合规采集
  27. 27
    操作 Excel、CSV 与批量文件
  28. 28
    SQLite:给程序加一个数据库
  29. 29
    数据分析入门:NumPy 与 Pandas
  30. 30
    画图:把数据变得直观
  31. 31
    Flask 入门:做一个小网站
  32. 32
    异步编程:同时处理多项任务
  33. 33
    线程、进程与并发选择
  34. 34
    性能分析与优化
  35. 35
    项目结构、配置与发布
  36. 36
    综合项目:从需求到上线

查看整个系列 →

到现在为止,程序都是直着往下走的:从上到下,一行一行执行。但现实里的逻辑不是直线——”如果下雨就带伞,否则就晒被子”。让程序学会做选择,靠的就是条件判断。

if 语句:最简单的分支

weather = "晴"
if weather == "晴":
    print("出门散步")
print("程序结束")

结构拆解:if + 条件 + 冒号,下面缩进的代码块是条件成立时执行的。== 是比较相等(= 是赋值,别写混!)。

if / elif / else:多分支

score = 85
if score >= 90:
    grade = "优秀"
elif score >= 80:
    grade = "良好"
elif score >= 60:
    grade = "及格"
else:
    grade = "不及格"
print(f"成绩等级:{grade}")

elif 是 “else if” 的缩写,可以有多个。程序从上往下找,命中第一个成立的就停,后面的不再看。所以顺序很重要——把最严格的条件放前面。

比较运算符

a, b = 5, 3
print(a == b)   # False 相等
print(a != b)   # True  不相等
print(a > b)    # True  大于
print(a < b)    # False 小于
print(a >= 5)   # True  大于等于
print(a <= 3)   # False 小于等于

字符串也能比较(按字典序):

print("abc" < "abd")   # True
print("南山" == "南山")  # True

逻辑运算符:and / or / not

多个条件组合,用逻辑运算符:

age = 25
has_ticket = True
# and:两个都成立才 True
if age >= 18 and has_ticket:
    print("可以进场")
# or:一个成立就行
if age < 12 or age >= 60:
    print("免费")
# not:取反
if not has_ticket:
    print("请先买票")

注意:Python 里写 &&||! 会报语法错误,那是别的语言的习惯,这里要用英文单词。

in:判断包含

判断一个东西在不在容器里,用 in

fruits = ["苹果", "香蕉", "橘子"]
print("苹果" in fruits)     # True
name = "南山小站"
print("小站" in name)       # True(字符串包含)
config = {"debug": True}
print("debug" in config)    # True(字典的键)

真值判断:别写 == True

Python 里很多东西可以直接当条件用:空的东西是 False,非空是 True

items = []
if items:            # 空列表 → False
    print("有货")
else:
    print("空了")

name = "南山"
if name:             # 非空字符串 → True
    print(f"你好,{name}")

空字符串、空列表、空字典、空元组、空集合、0、0.0、None、False 都是假值,其余通常是 True。所以 if items == True 这种写法是多余的,直接 if items: 就好。

三元表达式:一行写判断

简单的二选一赋值,可以用一行搞定:

age = 17
status = "成年" if age >= 18 else "未成年"
print(status)  # 未成年

逻辑:值1 if 条件 else 值2,条件成立取值1,否则取值2。超过一行就别硬用,可读性优先。

新手坑

坑 1:忘记冒号。if age > 18 后面必须有冒号,漏了报 SyntaxError

坑 2:缩进不一致。Python 用缩进表示代码块,同一块必须对齐(推荐 4 个空格)。Tab 和空格混用会报 IndentationError

坑 3:=== 写混。if score = 85: 是赋值,会直接报语法错误(Python 干脆不允许,反而好)。

坑 4:elif 写成 else if。Python 没有 else if,只有 elif

小结

  • if / elif / else 构成分支,从上往下命中即停,严格条件放前面
  • 比较用 == != > < >= <=,组合用 and or not
  • in 判断包含;空值(空串/空列表/0/None)是 False,直接 if x: 判断
  • 三元表达式 a if 条件 else b 适合简单二选一
  • 别忘了冒号和一致的缩进

练习

  1. 写一个程序:输入一个数字,判断它是正数、负数还是零
  2. 写一个程序:输入年份,判断是不是闰年(能被 4 整除且不能被 100 整除,或者能被 400 整除)
  3. 思考:if 0:if ""if [] 会执行 if 还是 else?为什么 Python 要这样设计”空即假”?