第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是「左闭右开」的,包含左边,不包含右边。
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更清晰,也防止意外情况。
4.8 本章小结
分支和循环,说白了就是让代码「活起来」。没有它们,代码就是死板的流水线;有了它们,代码才能根据情况做决策、重复执行任务。
我个人建议:多写几个小练习。比如用for循环打印九九乘法表,用while循环实现一个简单的计算器。写多了,这些结构就变成肌肉记忆了。
下一章我们会聊函数——把代码打包成「积木」,想用就调用。到时候你会发现,分支和循环是函数里最常用的「内脏」。