4. 分支和循环:if判断语句、运算符、if-else语句、while循环、for循环、break、continue

各位同学,欢迎来到第四章。从这一章开始,我们的代码终于有了「脑子」——它会做判断了,也会重复干活了。

说实话,分支和循环是编程里最基础、也最核心的两个结构。你想想看,任何复杂的程序,拆到最底层,无非就是「如果怎样就怎样」和「反复做某件事」。我当年刚学的时候,觉得这俩玩意儿太简单了,结果后来写项目时,发现坑全藏在细节里。

好,咱们一个一个来。

4.1 布尔类型与比较运算符

在讲判断之前,得先聊聊「真」和「假」。Python里用 TrueFalse 表示,类型叫 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("在范围内")
小技巧:Python 支持链式比较,上面的代码可以写成 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("不及格")
注意:elifelse 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)
核心区别:while 适合「不知道要循环多少次」的场景,for 适合「明确知道要遍历什么」的场景。你想想看,读文件时用 while,遍历列表时用 for,这是最自然的搭配。

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 跳过了所有偶数,只打印奇数。

避坑指南:我曾经在嵌套循环里用 break,以为它只跳出内层循环——没错,它确实只跳出内层。但如果你想让外层也跳出,需要加标志位或者用 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

这个例子用到了 whileif-elif-elsebreak。你想想看,如果没有循环,你得写多少行代码才能实现「反复猜」?

4.9 本章小结

这一章我们学了:

  • 布尔值和比较运算符
  • 逻辑运算符 andornot
  • ifif-elseelif 判断结构
  • whilefor 循环
  • breakcontinue 控制循环

说实话,这些内容看起来简单,但它们是所有复杂逻辑的基石。我建议你多写几个小练习,比如打印九九乘法表、判断闰年、求水仙花数。写多了,自然就熟了。

下一章我们会讲列表和元组,到时候你会发现,循环和这些数据结构配合起来,威力才真正显现出来。