4. 分支和循环:让代码学会“思考”和“重复”
各位同学,欢迎来到第四章。从这一章开始,我们的代码终于要有点“智能”的样子了。
前面几章我们学了变量、数据类型、还有输入输出。说实话,那都是“死”的代码——你写什么,它就执行什么,一条路走到黑。但现实世界不是这样的。你想想看,我们做决策时,是不是经常要“如果...就...否则...”?写代码也一样。
这一章,我们就来聊聊怎么让代码学会判断和循环。说白了,就是让程序能“思考”,能“重复干活”。
4.1 判断语句:if 和 if-else
先从一个最简单的场景说起。假设你要写一个程序,判断用户输入的年龄是否成年。你会怎么写?
age = int(input("请输入你的年龄:"))
if age >= 18:
print("你已经成年了")
else:
print("你还未成年")
嗯,这就是最基础的 if-else 结构。我个人习惯把 if 理解成“如果”,else 理解成“否则”。代码读起来就像在说人话:如果年龄大于等于18,就打印成年;否则打印未成年。
核心语法:
if 条件:— 条件为真时执行缩进的代码块else:— 条件为假时执行缩进的代码块- 注意冒号
:不能丢,缩进必须统一(通常用4个空格)
我在项目中遇到过不少新手,一上来就写 if age = 18。注意了,判断相等要用两个等号 ==,一个等号是赋值。这个坑我当年也踩过,调试了半天才发现。
4.2 运算符:判断的“工具”
判断条件离不开运算符。Python 的运算符其实不多,但很实用。我整理了一张表,你一看就明白。
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
| == | 等于 | 5 == 5 | True |
| != | 不等于 | 5 != 3 | True |
| > | 大于 | 5 > 3 | True |
| < | 小于 | 5 < 3 | False |
| >= | 大于等于 | 5 >= 5 | True |
| <= | 小于等于 | 5 <= 3 | False |
除了这些,还有逻辑运算符:and、or、not。举个例子:
score = 85
if score >= 60 and score < 80:
print("成绩合格")
elif score >= 80:
print("成绩优秀")
else:
print("不及格")
这里用到了 elif,它是“else if”的缩写。当有多个条件需要判断时,elif 比写一堆嵌套的 if 要清爽得多。
小技巧: 判断一个数是否在某个范围内,Python 支持链式比较。比如 if 60 <= score < 80,这样写更直观。我经常用这个写法,代码看起来舒服多了。
4.3 while 循环:重复直到条件不满足
循环是什么?说白了,就是让一段代码反复执行。while 循环的格式很简单:
count = 0
while count < 5:
print("当前计数:", count)
count += 1
这段代码会打印 0 到 4。为什么?因为每次循环都会检查 count < 5 是否为真,为真就继续,为假就退出。
警告: 写 while 循环最容易犯的错误就是忘记更新循环变量。我曾经见过一个新手写了个 while True: 但里面没有 break,结果程序卡死了。嗯,死循环有时候是故意的,但更多时候是 bug。
我曾经在做一个数据采集工具时,需要不断从传感器读取数据,直到用户按下停止键。while 循环配合一个标志变量,完美解决了这个问题。
4.4 for 循环:遍历的利器
for 循环和 while 循环的区别是什么?我个人理解是:while 适合“不知道要循环多少次”的场景,for 适合“遍历一个序列”的场景。
看个例子:
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
这段代码会依次打印出三种水果。for 循环会自动从列表中取出每个元素,赋值给变量 fruit,然后执行循环体。
如果你需要循环一个数字范围,可以用 range() 函数:
for i in range(5):
print(i) # 打印 0, 1, 2, 3, 4
range(5) 生成 0 到 4 的整数序列。注意,是左闭右开区间,不包括 5。你想想看,如果包括 5,那 range(5) 就有 6 个数了,反而不符合直觉。
4.5 break 和 continue:循环的“刹车”和“跳过”
有时候,我们需要在循环中途退出,或者跳过某次循环。这时候 break 和 continue 就派上用场了。
- break:立即终止整个循环,不再执行后续的循环。
- continue:跳过当前这次循环,继续下一次。
看个例子:
for i in range(10):
if i == 5:
break
print(i) # 打印 0, 1, 2, 3, 4
当 i 等于 5 时,break 执行,循环直接结束。所以只打印了 0 到 4。
再看 continue:
for i in range(5):
if i == 2:
continue
print(i) # 打印 0, 1, 3, 4
当 i 等于 2 时,continue 跳过本次循环,不执行 print,直接进入下一次。所以 2 没有被打印。
避坑指南: 我曾经在写一个搜索算法时,把 break 和 continue 搞混了。本意是想找到目标后退出循环,结果用了 continue,导致程序一直在循环里打转。记住:break 是彻底退出,continue 只是跳过当前。
4.6 本章知识体系
为了让你更直观地理解这一章的内容,我画了一张流程图。它展示了分支和循环的核心逻辑关系。
这张图展示了程序执行的两种核心控制结构。遇到需要判断的场景,我们用 if 系列语句;遇到需要重复的场景,我们用 while 或 for 循环。而 break 和 continue 则是在循环内部做精细控制。
我的建议: 刚开始学的时候,不要急着把所有语法都背下来。先理解“判断”和“循环”这两个概念。写代码时多问自己:这里需要做选择吗?这里需要重复执行吗?想清楚了,语法自然就记住了。
好了,这一章的内容就到这里。分支和循环是编程的基石,你掌握得越扎实,后面学函数、学数据结构就越轻松。记得多动手写代码,光看是学不会的。
可可精品资料库