Python3流程控制入门:if条件语句/for循环/while循环,新手能直接用的代码指南
想写一个自动猜数字的小游戏?想批量处理 100 个文件的命名?Python 的「条件语句」和「循环语
句」就是解决‘判断逻辑’和‘重复操作’的核心工具 —— 今天从基础到实战,带你吃透这 2 类高
频语法!
一、条件语句
Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程:
if语句执行流程:
开始 → 判断条件 →
- 条件为 true → 执行条件代码 → 结束
- 条件为 false → 直接 结束
核心要点:
- 单一路径:从头到尾只走一条分支
- 二选一:要么执行代码块,要么跳过
- 一次性:执行后立即结束,不会循环判断
- 结果导向:完全取决于条件的布尔值
搞清楚了流程之后,直接上实战
1. 猜数字游戏(if-elif-else)
number = 4
guess = 0
print("数字猜谜游戏!")
while guess != number:
guess = int(input("请输入你猜的数字:"))
if guess < number:
print("你猜的数字小了!")
elif guess > number:
print("你猜的数字大了!")
else:
print("恭喜你猜对了!")
2. 数字整除判断(嵌套if-else)
num = int(input("请输入一个数字: "))
if num % 2 == 0:
if num % 3 == 0:
print("这个数字可以被2和3整除")
else:
print("这个数字可以被2整除,但不能被3整除")
else:
if num % 3 == 0:
print("这个数字可以被3整除,但不能被2整除")
else:
print("这个数字不能被2和3整除")
注意:
- 1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
- 2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
- 3、在 Python 中没有 switch...case 语句,但在 Python3.10 版本添加了
match...case,功能也类似,详见下文。
3. 状态判断(match-case)
def http_error(status): match status: case 400: return "Bad request" case 404: return "Not found" case 418: return "I'm a teapot" case _: return "Something's wrong with the internet"
mystatus = int(input("请输入你的状态: ")) print(http_error(mystatus))
Python 3.10 增加了 match...case 的条件判断,不需要再使用一连串的 if-else 来判断了,不仅进一步提高了代码的运行效率,而且 match 后的对象会依次与 case 后的内容进行匹配,如果匹配成功,则执行匹配到的表达式,否则直接跳过, 可以匹配一切。
## 二、循环语句
Python 中的循环语句有 for 和 while。
接下来具体讲讲两个循环语句的代码执行逻辑:
**While循环和for循环的代码执行逻辑如下:**

**while循环执行流程:**
**开始** → **初始化变量** → **判断条件** →
- 条件为 **true** → 执行循环体 → **更新变量** → 返回判断条件
- 条件为 **false** → 直接 **结束**
**核心机制:**
- **先判断后执行**:每次循环前先检查条件
- **变量控制**:必须初始化并在循环内更新变量
- **循环条件**:条件为true时持续执行循环体
- **自动循环**:执行完循环体后自动返回条件判断
- **条件为false时退出**:循环终止的唯一条件
**特点:** 循环次数由变量变化和条件共同控制,适合未知次数的循环场景
**for循环执行流程:**
**开始** → **初始化变量** → **检查条件** →
- 条件为 **true** → 执行循环体 → **更新变量** → 返回检查条件
- 条件为 **false** → 直接 **结束**
**核心特征:**
- 自动迭代:变量自动更新(如 `a += 1`)
- 条件控制:每次循环前检查条件
- 循环往复:条件为真时重复执行循环体
- 有限次数:循环次数由初始值和条件决定
**典型模式:** 初始化→检查→执行→更新→再检查→...→终止
**接下来通过几个循环语句的案例加深理解:**
### 1. 数字求和(while循环)
```python
n = int(input("请输入一个数字: "))
sum = 0
counter = 1
while counter <= n:
sum += counter
counter += 1
print("1到%d之和为%d" % (n, sum))
运行逻辑: 程序首先读取用户输入的数字n,初始化累加器sum为0和计数器counter为1;然后进入while循环,只要counter小于等于n就执行循环体:将counter值累加到sum中,并将counter加1;循环结束后输出1到n的累加结果。
2. 循环计数(while-else)
count = 0
while count < 5:
print("小于5")
count += 1
else:
print(count, "大于5")
运行逻辑: 程序初始化count为0,进入while循环后只要count小于5就打印"小于5"并将count加1;当count达到5时循环条件不满足,循环正常结束,随后执行else块打印"5 大于5"。
3. 范围输出(for-else)
for num in range(1, 5):
print(num)
else:
print("Finally finished!")
运行逻辑: 程序使用for循环遍历range(1, 5)生成的数字序列1、2、3、4,依次打印每个数字;当循环正常结束后(非break中断),执行else块打印"Finally finished!"。
4. 循环中断(for-break)
sites = ["Baidu", "Google", "Runoob", "Taobao"]
for site in sites:
if site == "Runoob":
print("菜鸟教程!")
break
print("循环数据 " + site)
else:
print("没有循环数据!")
print("完成循环!")
运行逻辑: 程序遍历sites列表中的每个站点,当遇到"Runoob"时打印"菜鸟教程!"并通过break立即终止循环,因此不会执行else块;最后打印"完成循环!"结束程序。由于循环被break中断,else部分的"没有循环数据!"不会输出。
5. 索引遍历(range+len)
a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
for i in range(len(a)):
print(i, a[i])
运行逻辑: 程序通过range(len(a))
生成索引序列0到4,使用for循环依次遍历每个索引值,在每次迭代中同时打印当前索引i和对应的列表元素a[i],实现带索引的列表遍历输出。
6. 指定步长(range步长参数)
for i in range(-10, -100, -30):
print(i)
运行逻辑: 程序使用for循环遍历range(-10, -100, -30)生成的等差数列,从-10开始,以-30为步长递减,依次输出-10、-40、-70三个数值,当下一个值-100达到终止条件-100(不包括该值)时循环结束。
7. 循环中断(while-break)
n = 5
while n > 0:
n -= 1
if n == 2:
break
print(n)
print('循环结束。')
运行逻辑: 程序从n=5开始while循环,每次先将n减1,当n减到2时满足if条件,执行break立即终止循环,因此只会输出4和3(n=2时被break中断),最后打印'循环结束。'。
8. 跳过当前循环(while-continue)
n = 5
while n > 0:
n -= 1
if n == 2:
continue
print(n)
print('循环结束。')
运行逻辑: 程序从n=5开始while循环,每次先将n减1,当n等于2时遇到continue语句,跳过本次循环的后续代码(不打印),直接进入下一次循环条件判断,因此输出结果为4、3、1、0,最后打印'循环结束。'。
Python流程控制语句对比表
特性 | if条件语句 | for循环 | while循环 |
---|---|---|---|
用途 | 条件判断,根据不同条件执行不同代码块 | 遍历序列或已知次数的循环 | 条件满足时的循环,次数不确定 |
语法 | if-elif-else |
for 变量 in 序列: |
while 条件: |
执行机制 | 从上到下判断条件,执行第一个为True的代码块 | 按顺序遍历序列中的每个元素 | 只要条件为True就重复执行 |
循环控制 | 不循环,只执行一次 | 自动迭代,无需手动控制 | 需要手动更新循环条件 |
适用场景 | 分支选择、状态判断、条件验证 | 遍历列表、字符串、范围等可迭代对象 | 等待输入、游戏循环、直到满足条件 |
是否需要终止条件 | 不需要 | 自动终止 | 必须设置终止条件,否则可能无限循环 |
典型示例 | 成绩等级判断、用户权限检查 | 处理文件列表、生成数字序列 | 猜数字游戏、菜单选择 |
可配合的语句 | elif , else |
else , break , continue |
else , break , continue |
执行次数 | 1次(只执行匹配的代码块) | 固定次数(由序列长度决定) | 不确定次数(由条件决定) |
内存使用 | 低(只执行一次) | 中等(需要存储序列) | 低(只检查条件) |
选择指南:
- 用if:需要根据不同条件执行不同操作时
- 用for:知道要循环多少次,或者需要遍历集合中的每个元素时
- 用while:不知道具体循环次数,需要持续执行直到满足某个条件时
组合使用:
if
经常嵌套在for
或while
循环内部进行条件判断for
和while
可以互相转换,但for
通常更简洁安全- 三种语句都可以配合
break
和continue
进行流程控制使用提示
if-elif-else
:用于多条件判断match-case
:Python 3.10+ 新特性,替代多if判断while-else
:循环正常结束执行elsefor-else
:同上,用于for循环break
:完全退出循环continue
:跳过当前循环,继续下一次range(start, stop, step)
:生成数字序列,step可为负数最后的话
笔记整理不易,如果觉得对你有帮助,请点个赞支持一下哦! 遇到问题? 欢迎在评论区留言,我会尽力解答。 想要更多? 关注我,持续获取我的学习笔记干货!