4、分支和循环:if判断语句、运算符、if-else语句、while循环、for循环、break、continue
说实话,编程里最核心的「肌肉记忆」就两样:判断和循环。
判断让代码有脑子,循环让代码有力气。你想想看,没有判断,程序只能一条路走到黑;没有循环,重复写100遍同样的操作能把你累死。
我个人习惯把这一章叫做「代码的骨架和关节」——判断是关节,决定往哪走;循环是骨架,撑起重复劳动。今天咱们就把这两样东西彻底吃透。
4.1 if判断语句:让代码学会「看情况」
先来个最简单的场景。你写了个程序,要判断用户年龄是否成年。
age = 18
if age >= 18:
print("已成年,可以注册")
嗯,这里要注意:if 后面跟的是条件表达式,结果必须是 True 或 False。冒号不能丢,缩进必须对齐。
我的小习惯:写 if 的时候,我习惯先把条件想成一句人话。比如「如果年龄大于等于18」,翻译成代码就是
if age >= 18。这样不容易写反。
4.2 运算符:判断的「工具包」
判断离不开运算符。我把它分成三类,你记牢了:
| 类型 | 运算符 | 例子 |
|---|---|---|
| 比较运算符 | == != > < >= <= |
5 > 3 → True |
| 逻辑运算符 | and or not |
age >= 18 and has_id |
| 成员运算符 | in not in |
"admin" in user_list |
我在项目中遇到过最坑的事:把 == 写成 =。一个是判断相等,一个是赋值。Python 里不会报错,但逻辑全乱。我曾经因为这个 bug 排查了半小时……
4.3 if-else 与 if-elif-else:多路分支
单分支不够用?那就上双分支和多分支。
score = 85
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "D"
print(f"你的等级是:{grade}")
避坑指南:我曾经写过一段代码,elif 的条件顺序搞反了。比如先判断
score >= 60 再判断 score >= 90,结果 95 分的人也被归到「及格」里了。记住:范围判断要从大到小写。
4.4 while 循环:不知道循环几次?用它
while 循环适合「不知道要循环多少次」的场景。比如等待用户输入正确密码:
password = ""
while password != "123456":
password = input("请输入密码:")
print("登录成功!")
说白了,while 就是「只要条件成立,就一直做」。但有个大坑——死循环。我刚开始学的时候,忘写循环变量更新,程序直接卡死。嗯,Ctrl+C 是救命快捷键。
4.5 for 循环:遍历一切
for 循环是我用得最多的。它天生就是用来「遍历」的——遍历列表、遍历字符串、遍历字典。
# 遍历列表
fruits = ["苹果", "香蕉", "橘子"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
# 配合 range() 遍历数字
for i in range(5):
print(f"第{i+1}次循环")
我个人习惯用 for item in collection 这种写法,可读性最好。你想想看,代码读起来就像在说「对于集合里的每一个元素,做点什么」——多自然。
4.6 break 和 continue:循环的「刹车」和「跳过」
这两个关键字是循环的「控制手柄」。
- break:立即结束整个循环。比如找到目标就停。
- continue:跳过当前这一次,继续下一次。
# break 示例:找到第一个偶数就停
numbers = [1, 3, 5, 6, 7, 9]
for n in numbers:
if n % 2 == 0:
print(f"找到偶数:{n}")
break
# continue 示例:跳过所有奇数
for n in range(10):
if n % 2 != 0:
continue
print(f"偶数:{n}")
实战经验:我在写爬虫时经常用 break。比如爬取商品列表,找到目标价格就立刻停止,避免浪费请求。continue 则常用于数据清洗——遇到脏数据就跳过,不中断整体流程。
4.7 知识体系总览
下面这张图帮你把本章的知识点串起来。建议你保存下来,写代码前瞄一眼。
4.8 综合小案例:猜数字游戏
把今天学的串起来,写个经典小游戏:
import random
target = random.randint(1, 100)
guess = None
attempts = 0
print("猜一个1到100之间的数字")
while guess != target:
guess = int(input("你的猜测:"))
attempts += 1
if guess < target:
print("小了,再大点")
elif guess > target:
print("大了,再小点")
else:
print(f"恭喜!猜对了!用了{attempts}次")
# 如果超过10次没猜中,给个提示
if attempts > 10:
print("虽然猜中了,但次数有点多哦")
这个例子把 if、while、break(隐含在条件里)、比较运算符全用上了。你跑一遍,就能感受到「判断+循环」组合起来的威力。
我的建议:学完这一章,别急着往下走。自己动手改改上面的代码——比如把猜数字改成猜字母,或者加上「猜大猜小」的提示范围。动手改一遍,比看十遍都管用。
公众号:蓝海资料掘金营,微信deep3321