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...else 和 for...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")