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 / if-else / elif 需要循环? 结束 while / for break / continue

这张图展示了程序执行的两种核心控制结构。遇到需要判断的场景,我们用 if 系列语句;遇到需要重复的场景,我们用 while 或 for 循环。而 break 和 continue 则是在循环内部做精细控制。

我的建议: 刚开始学的时候,不要急着把所有语法都背下来。先理解“判断”和“循环”这两个概念。写代码时多问自己:这里需要做选择吗?这里需要重复执行吗?想清楚了,语法自然就记住了。

好了,这一章的内容就到这里。分支和循环是编程的基石,你掌握得越扎实,后面学函数、学数据结构就越轻松。记得多动手写代码,光看是学不会的。

可可精品资料库