前言在第二篇博客中我们系统学习了 Python 的数据类型与运算符。你现在应该已经能够创建各种类型的数据并使用运算符对它们进行计算了。但是到目前为止我们写的代码都是从上到下顺序执行的——每一条语句只执行一次执行完就结束。这种线性代码能做很多事情但远远不够。真实世界中的程序需要做决策根据不同的情况执行不同的代码。需要重复做某件事把同样的操作执行很多次。需要把代码封装起来反复使用——这就是流程控制和函数的作用。本篇我们将学习条件语句if / elif / else让程序做选择循环语句for / while让程序重复执行跳转语句break / continue / pass控制循环的执行流程函数基础def / return把代码封装成可复用的单元函数的参数位置参数、关键字参数、默认参数、可变参数函数的作用域局部变量与全局变量这些是编程的核心骨架。掌握它们你才真正有能力写出能思考的程序。让我们开始吧一、条件语句让程序做选择1.1 为什么需要条件语句程序的一个基本能力是根据不同情况做不同的事。举一个生活的例子如果明天下雨我就带伞否则我就不带伞。这个如果…就…否则…的逻辑在程序中就叫条件语句。在 Python 中条件语句的关键字是if—— 如果elif—— 否则如果else if 的缩写else—— 否则1.2 最简单的 if 语句先看一个例子# 场景判断一个数是否大于 10x15ifx10:print(x 大于 10)print(程序结束)输出x 大于 10 程序结束逐行解析x15定义一个变量 x值为 15。ifx10:if是条件语句的关键字。x 10是一个表达式它的值是True真或False假。如果条件成立True就执行下面缩进的代码块如果不成立False就跳过这个代码块。print(x 大于 10)注意这一行前面有4个空格的缩进。在 Python 中缩进不是装饰而是语法的一部分缩进决定了哪些代码属于 if 语句的执行范围。没有缩进的代码比如print(程序结束)不属于 if 语句总会被执行。1.3 if…else两个分支如果条件不成立我们想执行另一段代码用elsex5ifx10:print(x 大于 10)else:print(x 不大于 10)# 输出x 不大于 10语法结构if 条件: 条件成立时执行的代码 else: 条件不成立时执行的代码1.4 if…elif…else多个分支当有多种情况需要判断时用elifelse if 的缩写score85ifscore90:print(成绩等级A)elifscore80:print(成绩等级B)elifscore70:print(成绩等级C)elifscore60:print(成绩等级D)else:print(成绩等级F不及格)# 输出成绩等级B逐行解析score 85→ 得分是 85 分。if score 90:→ 85 90不成立跳过。elif score 80:→ 85 80成立执行这个分支输出B然后整个 if…elif…else 语句结束后面两个 elif 和 else 全部跳过。关键理解if…elif…else 语句会从上到下依次判断条件遇到第一个成立的条件就执行对应代码然后立即退出整个语句。后续条件不再判断。1.5 条件表达式详解if后面跟的是一个布尔表达式即值为 True 或 False 的表达式。可以用以下几类比较运算符运算符含义示例等于x 10!不等于x ! 10大于x 10小于x 10大于等于x 10小于等于x 10# 比较运算示例nameAliceprint(nameAlice)# True相等print(name!Bob)# True不等于逻辑运算符运算符含义示例and逻辑与两者都成立才Truex 0 and x 10or逻辑或至少一个成立就Truex 0 or x 100not逻辑非取反not (x 10)# 逻辑运算符示例age25height180ifage18andheight175:print(符合条件成年且身高≥175cm)# 输出符合条件成年且身高≥175cm成员运算符与身份运算符运算符含义示例in在…中a in apple→ Truenot in不在…中b not in apple→ Trueis是同一个对象x is Noneis not不是同一个对象x is not None⚠️易错点和is的区别比较的是值是否相等 equality is比较的是是否为同一个对象 identity 对于小整数和短字符串Python 会进行** interning驻留**即相同的值可能共享同一个对象和is都为 True。但对于较大的值它们通常不相等a1000b1000print(ab)# True值相等print(aisb)# False不是同一个对象1.6 条件语句的嵌套条件语句可以嵌套使用但要注意缩进层级age20has_ticketTrueifage18:ifhas_ticket:print(允许入场)else:print(没票不准入场)else:print(未成年不准入场)# 输出允许入场嵌套层级图解if age 18: ← 第1层 if if has_ticket: ← 第2层 if嵌套在第1层内 print(允许入场) else: ← 第2层 else print(没票不准入场) else: ← 第1层 else print(未成年不准入场)建议嵌套层次一般不要超过 3 层。嵌套太深会导致代码难以阅读和维护这时可以考虑把内层逻辑封装成函数。二、循环语句让程序重复执行2.1 为什么需要循环