Skip to content

第四章:流程控制

条件判断 if/elif/else

生活中我们时刻在做判断:"如果下雨,就带伞;否则就戴帽子。" Python 的 if 语句就是同样的逻辑:

bash
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"你的成绩是 {score},等级为 {grade}")
bash
你的成绩是 85,等级为 B

⚠️ 注意: ⚠️ 常见错误:Python 用缩进(通常是 4 个空格)来表示代码块,不是花括号!缩进不一致会导致IndentationError。千万不要混用 Tab 和空格。

bash
# 三元表达式(简写 if-else)
age = 20
status = "成年" if age >= 18 else "未成年"
print(status)
bash
成年

for 循环

for 循环就像一个"传送带"——把东西一个一个送过来处理:

bash
# 遍历列表
fruits = ["苹果", "香蕉", "橘子", "西瓜"]
for fruit in fruits:
    print(f"我喜欢吃{fruit}!")

print("---")

# range() 生成数字序列
for i in range(1, 6):
    print(f"第 {i} 次循环")

print("---")

# 带索引遍历(enumerate)
for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")
bash
我喜欢吃苹果!
我喜欢吃香蕉!
我喜欢吃橘子!
我喜欢吃西瓜!
---
 1 次循环
 2 次循环
 3 次循环
 4 次循环
 5 次循环
---
0: 苹果
1: 香蕉
2: 橘子
3: 西瓜

while 循环

bash
# 猜数字游戏
import random
secret = random.randint(1, 10)
guess = 0
attempts = 0

while guess != secret:
    guess = int(input("猜一个 1-10 的数字:"))
    attempts += 1
    if guess > secret:
        print("太大了!")
    elif guess < secret:
        print("太小了!")

print(f"🎉 恭喜!你猜对了!答案是 {secret},共猜了 {attempts} 次。")
bash
猜一个 1-10 的数字:5
太大了!
猜一个 1-10 的数字:3
太小了!
猜一个 1-10 的数字:4
🎉 恭喜!你猜对了!答案是 4,共猜了 3 次。

break、continue 和 for...else

bash
# break:立即跳出循环
print("break 示例:找到第一个偶数就停止")
numbers = [1, 3, 5, 8, 9, 10]
for n in numbers:
    if n % 2 == 0:
        print(f"找到偶数:{n}")
        break
    print(f"  检查 {n}...")

print("\ncontinue 示例:跳过偶数")
for n in range(1, 8):
    if n % 2 == 0:
        continue
    print(f"奇数:{n}")

print("\nfor...else 示例:检查是否全是正数")
test_list = [1, 2, 3, 4, 5]
for n in test_list:
    if n < 0:
        print("发现负数!")
        break
else:
    # 循环正常结束(没有 break)时执行
    print("所有数字都是正数 ✅")
bash
break 示例:找到第一个偶数就停止
  检查 1...
  检查 3...
  检查 5...
找到偶数:8

continue 示例:跳过偶数
奇数:1
奇数:3
奇数:5
奇数:7

for...else 示例:检查是否全是正数
所有数字都是正数

📝 备注: 📝 小知识:for...else是 Python 独有的语法。只有当循环完整执行完毕(没遇到break)时,else块才会执行。常用于搜索场景:"如果搜遍了都没找到,就执行 else"。