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

写代码说白了就是让计算机替我们做决定、重复干活。分支和循环,就是实现这两件事的核心工具。我个人觉得,这两个概念一旦搞明白,Python 的大门就算真正推开了。

4.1 运算符:判断的基础

在讲 if 之前,得先聊聊运算符。因为判断离不开它们。

运算符分几类,我挑最常用的说:

  • 比较运算符:==(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)
  • 逻辑运算符:and(与)、or(或)、not(非)
  • 成员运算符:in、not in(判断某个值是否在序列里)

举个例子:

age = 18
print(age >= 18)   # True
print(age == 20)   # False
print(age > 15 and age < 30)  # True

嗯,这里要注意:== 是判断相等,= 是赋值。我见过不少新手在这翻车,包括我自己刚学的时候也犯过。

4.2 if 判断语句:让代码有脑子

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

if 条件:
    执行代码

注意那个冒号,还有缩进。Python 靠缩进来区分代码块,这是它的特色,也是新手最容易踩的坑。

来个实际例子:

score = 85
if score >= 60:
    print("及格了")

我在项目中遇到过一个问题:用户输入的成绩是字符串,直接跟数字比较会报错。所以记得先转类型:int(score)。

4.3 if-else 语句:两条路

光有 if 不够,有时候需要「如果……否则……」。这时候用 if-else:

score = 45
if score >= 60:
    print("及格了")
else:
    print("不及格")

如果条件不止两个,可以用 elif:

score = 85
if score >= 90:
    print("优秀")
elif score >= 60:
    print("及格")
else:
    print("不及格")
小技巧:elif 可以写多个,但 else 只能有一个,放在最后。

4.4 while 循环:重复直到条件不满足

while 循环的逻辑是:只要条件为真,就一直执行。语法:

while 条件:
    执行代码

举个例子,打印 1 到 5:

i = 1
while i <= 5:
    print(i)
    i += 1

我曾经犯过一个错误:忘记写 i += 1,结果程序死循环了,电脑风扇呼呼转。嗯,死循环是 while 最常见的坑,一定要确保条件最终会变成 False。

4.5 for 循环:遍历序列

for 循环更适合遍历列表、字符串、range 等序列。语法:

for 变量 in 序列:
    执行代码

遍历列表:

fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
    print(fruit)

用 range 生成数字序列:

for i in range(5):   # 0,1,2,3,4
    print(i)

我个人习惯用 for 循环多于 while,因为 for 更安全,不容易死循环。你想想看,for 循环的迭代次数是确定的,而 while 全靠你手动控制。

4.6 break 和 continue:控制循环的节奏

有时候需要在循环中途跳出去,或者跳过某一次。这时候用 break 和 continue。

  • break:立即结束整个循环
  • continue:跳过本次循环,进入下一次

看个例子:

for i in range(10):
    if i == 5:
        break   # 到5就停了
    print(i)
# 输出:0 1 2 3 4

for i in range(10):
    if i % 2 == 0:
        continue   # 跳过偶数
    print(i)
# 输出:1 3 5 7 9
注意:break 和 continue 只作用于当前所在的循环。如果是嵌套循环,它们只影响最内层的那一个。

4.7 知识体系图

下面这张图帮你理清本章的知识结构:

分支和循环 分支:if / if-else / elif 循环:while / for 比较运算符 逻辑运算符 break continue 核心:条件判断 + 重复执行 避免死循环,注意缩进

4.8 综合示例:猜数字游戏

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

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。我在项目中经常用类似的模式做重试逻辑,比如网络请求失败后自动重试。

核心总结:分支让代码有判断力,循环让代码有耐力。两者结合,能解决绝大多数逻辑问题。

好了,这一章就到这里。记住多写代码,光看是学不会的。