4. 分支和循环:if判断语句、运算符、if-else语句、while循环、for循环、break、continue
各位同学,欢迎来到第四章。从这一章开始,我们的代码终于有了「脑子」——它会做判断了,也会重复干活了。
说实话,分支和循环是编程里最基础、也最核心的两个结构。你想想看,任何复杂的程序,拆到最底层,无非就是「如果怎样就怎样」和「反复做某件事」。我当年刚学的时候,觉得这俩玩意儿太简单了,结果后来写项目时,发现坑全藏在细节里。
好,咱们一个一个来。
4.1 布尔类型与比较运算符
在讲判断之前,得先聊聊「真」和「假」。Python里用 True 和 False 表示,类型叫 bool。
怎么得到布尔值?最常见的方式就是比较:
print(3 > 2) # True
print(3 == 2) # False
print(3 != 2) # True
print(3 >= 3) # True
注意一个细节:== 是判断相等,= 是赋值。我见过太多新手把 if a = 5 写在代码里,然后报错一脸懵。嗯,这个坑我也踩过。
4.2 逻辑运算符
有时候一个条件不够,需要组合。Python提供了三个逻辑运算符:
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
and |
与(两边都真才真) | True and False |
False |
or |
或(一边真就真) | True or False |
True |
not |
非(取反) | not True |
False |
举个例子:判断一个数是否在 10 到 20 之间。
num = 15
if num >= 10 and num <= 20:
print("在范围内")
if 10 <= num <= 20:,更简洁。我个人很喜欢这种写法,可读性高。
4.3 if 语句
最简单的判断结构:
age = 18
if age >= 18:
print("成年了")
注意冒号和缩进。Python 用缩进来表示代码块,这是它的特色,也是新手最容易出错的地方。我建议你统一用 4 个空格,别混用 Tab。
4.4 if-else 语句
二选一的情况:
score = 85
if score >= 60:
print("及格")
else:
print("不及格")
如果条件不止两个,用 elif:
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
elif 是 else if 的缩写,Python 里没有 else if 这种写法。我曾经在项目里看到有人写 else if,结果报语法错误,排查了半天。
4.5 while 循环
当条件为真时,一直重复执行。说白了就是「只要…就一直…」。
count = 0
while count < 5:
print("第", count, "次循环")
count += 1
这里有个关键点:一定要让条件能变成 False,否则就是死循环。我早期写爬虫时,有一次忘记在循环里更新计数器,结果程序跑了一整夜……嗯,从那以后我每次写 while 都会检查退出条件。
4.6 for 循环
for 循环用来遍历一个可迭代对象(比如列表、字符串、range)。
for i in range(5):
print(i) # 输出 0 1 2 3 4
range(5) 生成 0 到 4 的整数序列。你也可以指定起始和步长:
for i in range(1, 10, 2):
print(i) # 输出 1 3 5 7 9
遍历列表也很常见:
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
print(fruit)
4.7 break 和 continue
这两个关键字用来控制循环的「节奏」。
- break:立即跳出整个循环
- continue:跳过本次循环,进入下一次
看个例子:
for i in range(10):
if i == 5:
break
print(i) # 输出 0 1 2 3 4
当 i 等于 5 时,break 生效,循环直接结束。
for i in range(10):
if i % 2 == 0:
continue
print(i) # 输出 1 3 5 7 9
这里 continue 跳过了所有偶数,只打印奇数。
for...else 结构。这个后面会讲到。
4.8 综合示例:猜数字游戏
把今天学的串起来,写个小游戏:
import random
target = random.randint(1, 100)
guess = None
while guess != target:
guess = int(input("猜一个 1-100 之间的数字:"))
if guess < target:
print("小了")
elif guess > target:
print("大了")
else:
print("恭喜,猜对了!")
break
这个例子用到了 while、if-elif-else、break。你想想看,如果没有循环,你得写多少行代码才能实现「反复猜」?
4.9 本章小结
这一章我们学了:
- 布尔值和比较运算符
- 逻辑运算符
and、or、not if、if-else、elif判断结构while和for循环break和continue控制循环
说实话,这些内容看起来简单,但它们是所有复杂逻辑的基石。我建议你多写几个小练习,比如打印九九乘法表、判断闰年、求水仙花数。写多了,自然就熟了。
下一章我们会讲列表和元组,到时候你会发现,循环和这些数据结构配合起来,威力才真正显现出来。