第4章:分支与循环——让代码学会做决定

写代码就像指挥一个机器人干活。你告诉它「如果这样,就做A;否则做B」。这就是分支。你告诉它「重复做10次」,这就是循环。这两个东西,是编程里最基础也最核心的控制结构。

我个人习惯把分支和循环比作「代码的骨架」。没有它们,程序只能从上往下一条条执行,那跟流水账有什么区别?

4.1 运算符:判断的基础

在讲if之前,得先聊聊运算符。说白了,运算符就是用来「比较」和「计算」的符号。

类型 运算符 说明
比较运算符 ==, !=, >, <, >=, <= 返回True或False
逻辑运算符 and, or, not 组合多个条件
成员运算符 in, not in 检查是否在序列中
小技巧:我刚开始写代码时,经常把 =(赋值)和 ==(等于)搞混。记住一个口诀:= 是「把右边的值给左边」,== 是「问两边是否相等」。

4.2 if判断语句

if语句,就是「如果……就……」。语法很简单:

age = 18
if age >= 18:
    print("你已经成年了")

注意那个冒号!Python里冒号后面要缩进。缩进是Python的灵魂,少了它代码就报错。我在项目中遇到过好几次,同事把缩进搞混,结果逻辑全乱了。

4.3 if-else语句

有「如果」,自然就有「否则」。if-else就是两条路:

score = 85
if score >= 60:
    print("及格了")
else:
    print("没及格,加油")

你想想看,如果条件不止两个呢?比如成绩分A、B、C、D。这时候用 elif:

score = 85
if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "F"
print(f"你的等级是:{grade}")
注意:我曾经犯过一个错——把 elif 写成了 else if。Python里没有 else if,只有 elif。少写一个字母,报错半小时。

4.4 while循环

while循环,就是「当条件成立时,一直做某件事」。有点像你妈喊你「作业没写完不准吃饭」——条件(作业没写完)一直成立,你就一直写。

count = 0
while count < 5:
    print(f"第{count+1}次循环")
    count += 1

这里有个坑:别忘了更新条件。如果忘了写 count += 1,count永远小于5,循环就永远跑下去——这叫「死循环」。我刚开始学的时候,写死循环把电脑跑卡了,只能强制关机。

4.5 for循环

for循环更适合「遍历」——比如遍历一个列表、字符串、或者一个范围。

# 遍历列表
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
    print(fruit)

# 遍历范围
for i in range(5):
    print(i)  # 输出0到4

range(5) 生成0到4的数字。如果你想从1开始,用 range(1, 6)。嗯,这里要注意:range是「左闭右开」的,包含左边,不包含右边。

核心区别:while循环适合「不知道要循环多少次」的场景,for循环适合「知道要遍历什么」的场景。说白了,while是「等条件」,for是「数着来」。

4.6 break和continue

这两个是循环里的「控制开关」。

  • break:立即跳出整个循环。就像你开会开到一半,突然有急事,直接走人。
  • continue:跳过本次循环,进入下一次。就像你吃火锅,吃到花椒,吐掉继续吃。
# break示例:找到第一个偶数就停
for i in range(1, 10):
    if i % 2 == 0:
        print(f"找到偶数:{i}")
        break

# continue示例:跳过奇数
for i in range(1, 6):
    if i % 2 != 0:
        continue
    print(f"偶数:{i}")

我在项目中遇到过一个问题:用while循环读取文件,读到空行就break。如果不加break,程序会一直读下去,内存爆掉。所以break在实战中非常有用。

4.7 综合示例:猜数字游戏

把今天学的串起来,写个小游戏:

import random

target = random.randint(1, 100)
guess = None
attempts = 0

while guess != target:
    guess = int(input("猜一个1到100之间的数字:"))
    attempts += 1
    
    if guess > target:
        print("太大了")
    elif guess < target:
        print("太小了")
    else:
        print(f"恭喜!猜对了!用了{attempts}次")
        break

这个例子用了while循环、if-elif-else、break。你想想看,如果去掉break会怎样?其实while条件已经判断了 guess != target,猜对后自然退出。但加上break更清晰,也防止意外情况。

避坑指南:我曾经在嵌套循环里用break,结果只跳出了内层循环,外层还在跑。记住:break只跳出当前这一层循环。想跳出多层?可以用标志变量,或者把循环封装成函数用return。

4.8 本章小结

分支和循环,说白了就是让代码「活起来」。没有它们,代码就是死板的流水线;有了它们,代码才能根据情况做决策、重复执行任务。

我个人建议:多写几个小练习。比如用for循环打印九九乘法表,用while循环实现一个简单的计算器。写多了,这些结构就变成肌肉记忆了。

下一章我们会聊函数——把代码打包成「积木」,想用就调用。到时候你会发现,分支和循环是函数里最常用的「内脏」。