【Python零基础入门】第4篇:《Python 流程控制------条件判断与循环结构》
导语 : 在前面的课程中,我们编写的代码都是"一条路走到黑"------从上到下按顺序执行。但在现实生活中,我们常常需要根据情况做出选择(如果下雨就带伞),或者重复做某件事(每天跑3公里)。 今天,我们将学习 Python 的流程控制,让你的程序拥有"判断力"和"执行力",真正活起来!
一、 条件判断:让程序学会"思考"
条件判断的核心是 if 语句。在 Python 中,缩进(通常是4个空格) 是代码块的灵魂,它决定了哪些代码属于哪个条件分支。
1. 单分支:if
当条件为真(True)时,执行缩进的代码块。
python
age = 20
if age >= 18:
print("你已经成年了,可以考取驾照!")
print("欢迎加入成年人的世界。")
# 注意:这两行 print 都有缩进,它们同属于 if 代码块
2. 双分支:if-else
非此即彼,条件为真执行 if,否则执行 else。
python
score = 55
if score >= 60:
print("恭喜,考试及格!")
else:
print("很遗憾,考试不及格,需要补考。")
3. 多分支:if-elif-else
当有多个条件需要判断时,使用 elif(else if 的缩写)。注意:elif 可以有多个,但 else 最多只能有一个,且必须放在最后。
python
score = 85
if score >= 90:
grade = "A (优秀)"
elif score >= 80:
grade = "B (良好)"
elif score >= 60:
grade = "C (及格)"
else:
grade = "D (不及格)"
print(f"你的成绩等级是:{grade}")
⚠️ 避坑警告 :在条件判断中,千万不要把比较运算符
==写成赋值运算符=!
if x == 5:(正确:判断 x 是否等于 5)if x = 5:(错误:会导致SyntaxError语法错误)
二、 循环结构:让程序不知疲倦地"重复"
Python 提供了两种循环方式:while 循环和 for 循环。
1. while 循环(条件循环)
只要条件为 True,就会一直执行下去。务必确保条件最终会变为 False,否则会陷入"死循环"!
python
count = 1
while count <= 3:
print(f"这是第 {count} 次循环")
count += 1 # ⚠️ 别忘了更新变量,否则死循环!
print("循环结束!")
2. for 循环(遍历循环)
for 循环用于遍历任何可迭代对象 (如字符串、列表,以及 range 生成的序列)。它是 Python 中最常用的循环。
遍历字符串:
python
for char in "Python":
print(char, end=" ") # 输出: P y t h o n
配合 range() 函数使用: range(start, stop, step) 用于生成一个整数序列。注意:包含 start,但不包含 stop(左闭右开)。
python
# 打印 0 到 4
for i in range(5):
print(i) # 输出: 0, 1, 2, 3, 4
# 打印 1 到 9 的奇数 (步长为2)
for i in range(1, 10, 2):
print(i) # 输出: 1, 3, 5, 7, 9
三、 循环控制语句:精准掌控循环
有时候我们需要在循环中途进行干预,这就需要用到以下三个关键字:
| 关键字 | 作用 | 形象比喻 |
|---|---|---|
break |
立即终止整个循环,跳出循环体。 | 直接摔盘子,不干了! |
continue |
跳过本次循环剩余的代码,直接进入下一次循环。 | 跳过这道菜,吃下一道! |
pass |
空语句,占位符,什么都不做。 | 假装在思考,其实啥也没干。 |
代码演示:
python
# 演示 break 和 continue
for i in range(1, 6):
if i == 2:
continue # 当 i=2 时,跳过本次,不打印
if i == 4:
break # 当 i=4 时,直接终止整个循环
print(f"当前数字是: {i}")
# 输出结果:
# 当前数字是: 1
# 当前数字是: 3
四、 实战演练:猜数字小游戏
让我们把条件判断和循环结合起来,写一个经典的"猜数字"游戏。程序会随机生成一个 1-100 的数字,玩家有 5 次机会去猜。
python
import random # 导入随机数模块
# 1. 生成 1 到 100 之间的随机整数
secret_number = random.randint(1, 100)
max_attempts = 5
attempts = 0
print("🎮 欢迎来到猜数字游戏!")
print(f"我已经想好了一个 1 到 100 之间的数字,你有 {max_attempts} 次机会。")
# 2. 使用 while 循环控制游戏流程
while attempts < max_attempts:
# 获取用户输入并转换为整数
guess = int(input(f"\n[第 {attempts + 1} 次] 请输入你猜的数字:"))
attempts += 1
# 3. 条件判断
if guess < secret_number:
print("📉 太小了!再往大了猜。")
elif guess > secret_number:
print("📈 太大了!再往小了猜。")
else:
print(f"🎉 恭喜你,猜对了!答案就是 {secret_number}。")
print(f"你总共猜了 {attempts} 次。")
break # 猜对了,跳出循环
# 4. 循环正常结束(没有触发 break)的情况
else:
print(f"\n💀 很遗憾,{max_attempts} 次机会用光了!")
print(f"正确的数字其实是:{secret_number}")
💡 进阶知识点 :在 Python 中,
while和for循环后面可以跟一个else块。如果循环是正常结束 的(没有被break打断),就会执行else块。这在处理"搜索/查找"类逻辑时非常优雅!
五、 新手避坑指南
| 常见错误/疑惑 | 原因分析 | 正确做法 |
|---|---|---|
IndentationError |
缩进不一致,或者该缩进的地方没缩进。 | 严格使用 4个空格 进行缩进,不要用 Tab 键混用。 |
| 死循环 | while 循环的条件永远为 True,且内部没有改变条件的代码或 break。 |
检查循环体内是否有更新控制变量的代码(如 i += 1)。 |
range 边界漏数 |
以为 range(1, 5) 会包含 5。 |
牢记 range 是左闭右开 ,包含起点,不包含终点。应写为 range(1, 6)。 |
| 多分支逻辑漏洞 | if-elif 顺序写反,导致后面的条件永远无法触发。 |
条件判断应遵循从严格到宽泛(或从小到大/从大到小)的顺序。 |
六、 本篇小结与下期预告
📝 核心知识点回顾
- 条件判断 :
if-elif-else结构,依靠缩进 划分代码块,注意==和=的区别。 - 循环结构 :
while适合条件循环,for适合遍历循环;掌握range()函数的用法。 - 控制语句 :
break跳出循环,continue跳过当次,pass用于占位。 - 循环的 else :循环未被
break打断时执行,是 Python 的特色语法。
🚀 下期预告
目前我们只能把数据存在一个个独立的变量里,如果要存全班 50 个同学的成绩怎么办? 在《第5篇:数据容器------列表、元组、字典与集合》中,我们将:
- 学习 Python 最核心的四大数据结构(List, Tuple, Dict, Set)。
- 掌握数据的增、删、改、查操作。
- 了解它们各自的应用场景与性能差异。
💬 互动时间: 你在玩"猜数字"游戏时,最少用了几次猜中?在写循环时有没有不小心搞出过"死循环"?欢迎在评论区分享你的"翻车"或"高光"经历,博主会逐一回复!
本文属于【Python零基础入门】系列教程,欢迎关注博主,订阅专栏,带你从零开始系统掌握 Python!