流程控制:让程序学会思考与循环
在编程里,流程控制就是给程序装上“大脑”的关键部分。它主要解决两个核心能力:
- 思考 / 判断 / 做选择 → 条件分支(if / elif / else / match)
- 重复劳动 / 自动化执行 → 循环(for / while)
几乎所有稍微复杂一点的程序,都是这两种结构 + 顺序执行 组合出来的。
一、让程序学会“思考” —— 条件分支
最基础的样子(Python为例):
age = 17
if age >= 18:
print("你可以合法喝酒了!")
else:
print("再等几年吧~")
进阶一点(多分支):
score = 86
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格,再努力!")
Python 3.10+ 更优雅的写法(match-case,类似其他语言的switch):
http_code = 404
match http_code:
case 200:
print("成功")
case 404:
print("没找到页面")
case 500 | 502 | 503:
print("服务器出问题了")
case _:
print("未知错误")
一句话总结条件分支:
“如果……就……否则如果……就……否则……”
二、让程序学会“重复” —— 循环
编程里最强大的省力工具就是循环。两大主流循环:
1. for 循环(知道要循环多少次,或要遍历什么)
最常用、最安全、最推荐初学者优先掌握。
# 打印1~10
for i in range(1, 11):
print(i)
# 遍历列表
fruits = ["苹果", "香蕉", "橙子", "榴莲"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
# 带序号遍历(很常用!)
for idx, fruit in enumerate(fruits, 1):
print(f"第{idx}种水果:{fruit}")
2. while 循环(不知道具体次数,根据条件决定继续或停止)
# 经典猜数字游戏简化版
answer = 7
guess = 0
while guess != answer:
guess = int(input("猜一个1-10的数字:"))
if guess > answer:
print("太大了!")
elif guess < answer:
print("太小了!")
print("恭喜你猜对了!")
while 循环最容易犯的错误:忘记让条件趋向于结束(死循环)
错误示范:
count = 0
while count < 5:
print("哈哈哈")
# 忘记 count += 1 → 永久死循环
正确:
count = 0
while count < 5:
print("哈哈哈")
count += 1
三、循环里的两个“急刹车” —— break 与 continue
| 关键词 | 作用 | 类比生活 |
|---|---|---|
| break | 立刻跳出整个循环 | “我受不了了!不玩了!”直接走人 |
| continue | 结束本次循环,马上进入下一次循环 | “这次不算,重来!”跳过这一轮 |
例子:
for i in range(1, 11):
if i == 3:
continue # 跳过3
if i == 7:
break # 到7就彻底结束循环
print(i)
# 输出:1 2 4 5 6
四、快速对比总结表
| 需求 | 推荐结构 | 典型场景 |
|---|---|---|
| 要做一次判断 | if | 成绩分级、是否成年、输入合法性校验 |
| 很多种情况互斥 | if-elif-else / match | 菜单选择、HTTP状态码处理 |
| 明确知道循环次数,或遍历容器 | for … in … | 打印1~100、遍历列表/字典/文件行 |
| 不确定次数,但有结束条件 | while | 游戏循环、等待用户正确输入、爬虫翻页 |
| 必须至少执行一次再判断 | while + 先做一次 | ATM机输入密码(至少让输一次) |
五、给你三个最经典的入门练习题(强烈建议亲手写)
- 打印九九乘法表(for嵌套)
- 判断一个数是不是质数(for + break优化)
- 猜数字游戏(while + if + break + 加入次数限制)
你现在最想先搞懂/练习哪一部分?
- 条件判断(if家族)
- for循环(遍历神器)
- while循环(自由度最高但最容易死循环)
- break/continue/嵌套
- 直接来一道题练手
告诉我你的选择,我陪你一步步写出来~ 😄