Skip to content

03 流程控制

📋 资料说明

  • 来源:课程 day02~day03
  • 笔记尚硅谷大模型技术之Python1.0.docx 第 4 章"流程控制"
  • 每日一考day02_答案.md(3题)、day03_每日一考.md
  • 视频:❌ 跳过(约 20 个视频:嵌套分支 → 循环 → 列表)

🟢 🤖 AI 替代率:99%

为什么是这个水平:

分支(if/elif/else)和循环(while/for)是所有编程语言中最基础的控制结构。语法规则简单、逻辑固定、无歧义。AI 生成这类结构的代码几乎不会出错。match_case(Python 3.10+)和 ternary(三目运算)同样是确定性语法。


👤 人工干预率:1%

几乎无需人工干预。唯一值得留意的是 Python 的 while...elsefor...else 语法——大部分其他语言没有这个设计。理解 else 子句在循环中的触发条件(仅当循环未被 break 中断时执行)。


1. 分支语句

if 单分支

python
score = 85

if score >= 60:
    print("及格了")     # 条件为 True 时执行

if-else 双分支

python
age = 17

if age >= 18:
    print("成年人")
else:
    print("未成年人")

if-elif-else 多分支

python
score = 85

if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")       # 85 >= 80 → 输出
elif score >= 60:
    print("及格")
else:
    print("不及格")

嵌套分支

python
age = 20
has_id = True

if age >= 18:
    if has_id:
        print("可以进入")
    else:
        print("请出示证件")
else:
    print("未成年人禁止进入")

match_case(Python 3.10+)

类似于其他语言的 switch-case:

python
status_code = 404

match status_code:
    case 200:
        print("OK")
    case 404:
        print("Not Found")
    case 500:
        print("Server Error")
    case _:             # 默认分支(类似 default)
        print("Unknown")

match_case 支持更复杂的模式匹配(解包、类型匹配等):

python
point = (0, 5)

match point:
    case (0, 0):
        print("原点")
    case (0, y):
        print(f"Y 轴, y={y}")
    case (x, 0):
        print(f"X 轴, x={x}")
    case (x, y):
        print(f"坐标: ({x}, {y})")

三目运算符

python
# Python 的三目:value_if_true if condition else value_if_false
age = 20
status = "成年" if age >= 18 else "未成年"
print(status)   # 成年

# 嵌套三目(不推荐过度使用)
score = 85
grade = "优秀" if score >= 90 else "良好" if score >= 80 else "及格" if score >= 60 else "不及格"

Python vs Java/JS 差异

  • Python 三目:A if cond else B
  • Java/JS 三目:cond ? A : B
  • Python 的 match_case 比 Java 的 switch 更强大(支持解包和类型匹配)

2. 循环语句

while 循环

python
# 基础 while
count = 0
while count < 5:
    print(f"第 {count + 1} 次循环")
    count += 1

# while...else(仅当未 break 时执行 else)
n = 0
while n < 5:
    n += 1
    if n == 3:
        break
else:
    print("循环正常结束")    # 被 break 中断,不执行

# 无限循环(用 break 退出)
while True:
    cmd = input("输入命令(quit退出): ")
    if cmd == "quit":
        break
    print(f"执行: {cmd}")

for 循环

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

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

for i in range(1, 10, 2):   # 1, 3, 5, 7, 9(步长为 2)
    print(i)

# 遍历字符串
for char in "Python":
    print(char)

# 遍历列表
for fruit in ["苹果", "香蕉", "橘子"]:
    print(fruit)

# for...else
for i in range(10):
    if i == 5:
        break
else:
    print("循环未被中断")    # 被 break 中断,不执行

break 和 continue

python
# break:立即退出循环
for i in range(1, 10):
    if i == 5:
        break
    print(i)        # 1, 2, 3, 4

# continue:跳过当前迭代,进入下一次
for i in range(1, 10):
    if i % 2 == 0:
        continue
    print(i)        # 1, 3, 5, 7, 9

打印乘法表

python
for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}x{i}={i*j}", end="\t")
    print()         # 换行

# 输出:
# 1x1=1
# 1x2=2	2x2=4
# 1x3=3	2x3=6	3x3=9
# ...

3. 练习题

练习 1:偶数奇数判断

从 1 循环到 10,偶数打印"偶数",奇数打印"奇数"。

练习 2:等腰三角形

使用 for 循环打印下面的图形:

    *
   ***
  *****
 *******
*********

练习 3:登录验证

用户名 root,密码 123456,输入正确提示成功,输错提示失败(最多 3 次机会)。

练习 4:成绩等级

输入一个分数(0~100),输出对应的等级:A(90+), B(80+), C(70+), D(60+), F(<60)。使用 match_case 实现。


参考答案

练习 1:

python
for num in range(1, 11):
    if num % 2 == 0:
        print("偶数")
    else:
        print("奇数")

练习 2:

python
n = 5
for i in range(1, n + 1):
    # 打印空格
    for j in range(n - i):
        print(' ', end='')
    # 打印星号
    for k in range(2 * i - 1):
        print('*', end='')
    print()

练习 3:

python
for i in range(3):
    username = input("用户名: ")
    password = input("密码: ")
    if username == "root" and password == "123456":
        print("登录成功")
        break
    else:
        print(f"登录失败,剩余 {2 - i} 次机会")
else:
    print("账户已锁定")

练习 4:

python
score = int(input("输入分数: "))
match score // 10:
    case 10 | 9:
        print("A")
    case 8:
        print("B")
    case 7:
        print("C")
    case 6:
        print("D")
    case _:
        print("F")

OPC 超级个体实战指南