第4章:分支和循环——让代码学会“思考”和“重复”
各位同学,欢迎来到第四章。这一章的内容,我个人认为是Python入门的分水岭。
为什么这么说?因为前面的变量、数据类型,说白了就是“存储数据”。但从分支和循环开始,你的代码将拥有“判断能力”和“重复执行能力”。这才是程序真正“智能”的起点。
我当年刚学编程时,卡在循环上整整两天。后来想通了,其实就是一句话:让计算机替你做那些重复又无聊的事。好,我们开始。
4.1 运算符——判断的基础
在讲if之前,得先聊聊运算符。因为判断的本质,就是“比较两个东西”。
4.1.1 比较运算符
这些符号你小学就见过,只是写法有点不同:
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
| == | 等于 | 5 == 5 | True |
| != | 不等于 | 5 != 3 | True |
| > | 大于 | 7 > 3 | True |
| < | 小于 | 2 < 8 | True |
| >= | 大于等于 | 5 >= 5 | True |
| <= | 小于等于 | 4 <= 3 | False |
== 写成 =。一个等号是赋值,两个等号才是判断。这个错误,我估计每个程序员都犯过至少三次。
4.1.2 逻辑运算符
有时候一个条件不够,需要组合判断。这时候就用 and、or、not。
# 逻辑运算符示例
age = 25
has_id = True
# and:两个都满足才行
if age >= 18 and has_id:
print("可以进入网吧")
# or:满足一个就行
if age < 12 or age > 60:
print("可以免票")
# not:取反
if not has_id:
print("请出示身份证")
我个人习惯把逻辑运算符读成中文来理解:and就是“并且”,or就是“或者”,not就是“不”。这样写代码时思路会清晰很多。
4.2 if判断语句——让代码做选择
if语句,说白了就是“如果...就...”。这是程序最基础的决策能力。
4.2.1 基本if结构
score = 85
if score >= 60:
print("恭喜,及格了!")
注意看:if后面跟条件,条件后面有个冒号。然后缩进的代码,就是条件成立时要执行的。这个缩进很关键,Python靠它来识别代码块。
4.2.2 if-else语句
有“如果”,自然就有“否则”。
score = 45
if score >= 60:
print("及格了")
else:
print("不及格,需要补考")
4.2.3 if-elif-else——多分支判断
现实中往往不止两种情况。比如成绩评级:
score = 88
if score >= 90:
grade = "优秀"
elif score >= 80:
grade = "良好"
elif score >= 70:
grade = "中等"
elif score >= 60:
grade = "及格"
else:
grade = "不及格"
print(f"你的等级是:{grade}")
我在项目中遇到过一个问题:有人把 elif 写成了 else if。在Python里,else if 是错的,必须连写成 elif。嗯,这个细节要注意。
4.3 while循环——重复直到条件不满足
循环,就是让计算机反复做同一件事。while循环的逻辑很简单:只要条件为真,就一直执行。
# 打印1到5
count = 1
while count <= 5:
print(count)
count += 1 # 别忘了这一行!
count += 1,结果程序陷入了无限循环,电脑风扇呼呼转。如果你遇到程序卡死,先检查循环变量有没有更新。
while循环最适合用在“不知道要循环多少次”的场景。比如用户输入密码,直到正确为止:
password = ""
while password != "123456":
password = input("请输入密码:")
if password != "123456":
print("密码错误,请重试")
print("登录成功!")
4.4 for循环——遍历的利器
for循环和while不同。它更适合“我知道要循环多少次”或者“我要遍历一个序列”的情况。
4.4.1 遍历列表
fruits = ["苹果", "香蕉", "橘子", "西瓜"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
你看,for循环会自动从列表中取出每个元素,赋值给变量 fruit,然后执行循环体。简洁又优雅。
4.4.2 配合range()使用
如果想循环指定次数,用 range():
# 打印0到4
for i in range(5):
print(i)
# 打印2到6
for i in range(2, 7):
print(i)
# 打印1到9,步长为2(即奇数)
for i in range(1, 10, 2):
print(i)
4.5 break和continue——循环的控制开关
有时候,我们需要在循环中途“跳出来”或者“跳过某一次”。这时候break和continue就派上用场了。
4.5.1 break——立即终止循环
# 找到第一个能被7整除的数
for i in range(1, 100):
if i % 7 == 0:
print(f"找到了:{i}")
break # 找到后立即停止
break就像紧急刹车。一旦执行,整个循环立刻结束,后面的循环次数都不再执行。
4.5.2 continue——跳过本次循环
# 打印1到10中的偶数
for i in range(1, 11):
if i % 2 != 0:
continue # 奇数就跳过
print(i)
continue是“跳过这一次,继续下一次”。它不会终止循环,只是忽略当前这次。
4.6 实战小案例——猜数字游戏
把今天学的知识串起来,写个小游戏:
import random
target = random.randint(1, 100)
guess = 0
attempts = 0
print("猜数字游戏开始!范围1-100")
while guess != target:
try:
guess = int(input("请输入你的猜测:"))
attempts += 1
if guess < target:
print("猜小了,再大一点")
elif guess > target:
print("猜大了,再小一点")
else:
print(f"恭喜!猜对了!用了{attempts}次")
break
except ValueError:
print("请输入有效的数字!")
continue
这个例子包含了if-elif-else、while循环、break、continue。你想想看,如果没有循环,你得写多少个if才能实现“反复猜”的功能?
4.7 本章小结
好,我们来捋一捋今天的内容:
- 运算符:比较运算符(==, !=, >, <)和逻辑运算符(and, or, not)是判断的基础
- if判断:单分支用if,双分支用if-else,多分支用if-elif-else
- while循环:条件为真就重复,适合不确定次数的场景
- for循环:遍历序列或指定次数,配合range()使用
- break和continue:break终止整个循环,continue跳过当前这次
下一章,我们将学习字符串和列表的进阶操作。到时候你会发现,有了循环,处理数据简直如虎添翼。