目录
前言:为什么你写的 if-else 总像一团乱麻?😵
1. 分支结构:让程序学会“做选择”
1.1 单分支:最简单的“如果”
1.2 双分支:非此即彼的 if-else
1.3 多分支:多条件判断的 if-elif-else
1.4 三元表达式(条件表达式)
1.5 分支嵌套与“悬空else”陷阱
2. 循环结构:让重复的工作自动化
2.1 while 循环:小心那个永远停不下来的漩涡
2.2 for 循环:遍历界的瑞士军刀
2.3 循环控制三兄弟:break、continue、pass
2.4 循环嵌套:九九乘法表的秘密
3. 实战避坑:那些年我流过的泪 😭
4. 总结反思:从“能看懂”到“会运用”,你还差这一步
前言:为什么你写的if-else总像一团乱麻?😵
你是不是也经历过这些至暗时刻:
信心满满写下
if,一运行就报IndentationError,缩进空格和 Tab 纠缠不清elif和else连用,逻辑绕了山路十八弯,回头再看自己都看不懂while循环一不小心就成了“永动机”,电脑风扇狂转只能强制关机学了列表、字典,却只会用
for i in range(len(...))这种“远古写法”
别慌,99% 的初学者都掉进过这些坑。分支和循环是编程的任督二脉,打通了,代码就有了“灵魂”。今天我以一个 Python 老司机的身份,带你用最接地气的方式,把这些知识点掰开揉碎,让你看完就能上手,告别一脑袋浆糊。
文末有总结反思和避坑清单,记得读完!
1. 分支结构:让程序学会“做选择”
生活里处处是选择:如果下雨就带伞,否则不带。程序也是如此,通过条件判断来决定执行哪段代码。Python 中主要用if语句实现。
1.1 单分支:最简单的“如果”
python
age = 20 if age >= 18: print("你成年啦,可以进网吧了。")注意两点:
条件表达式后必须有冒号
:缩进是 Python 的语法!同一代码块必须保持相同缩进(推荐4个空格),不要混用Tab。
没有缩进的代码不被if管控:
python
if age >= 18: print("这句话在if内") print("这句话永远执行,因为没缩进")1.2 双分支:非此即彼的if-else
python
score = 85 if score >= 60: print("及格,恭喜!") else: print("不及格,补考加油。")这里else对应的是前面if条件不成立的所有其他情况,不需要再写条件。
1.3 多分支:多条件判断的if-elif-else
现实中的情况常常不止两种,比如成绩等级划分:
python
score = 82 if score >= 90: level = "A" elif score >= 80: level = "B" elif score >= 70: level = "C" elif score >= 60: level = "D" else: level = "F" print(f"你的等级是 {level}")关键规则:
从上到下依次判断,一旦某个条件成立,执行对应代码块后直接跳出整个结构,后续
elif和else不再判断。因此,条件的顺序非常重要。如果把
score >= 60放在最前面,那所有及格的人都只能拿到D。
1.4 三元表达式(条件表达式)
简单if-else赋值可以用一行搞定,代码更 Pythonic:
python
# 普通写法 if score >= 60: result = "及格" else: result = "不及格" # 三元写法 result = "及格" if score >= 60 else "不及格"
语法:value_if_true if condition else value_if_false。可读性优先,不要嵌套太多层。
1.5 分支嵌套与“悬空else”陷阱
if里面可以再写if,但新手最容易踩的坑是else 的匹配问题。
python
x = 10 if x > 0: if x > 5: print("x大于5") else: # 这个else匹配的是哪个if? print("x小于等于0")Python 按缩进决定归属:else与其上方最近的未配对if配对。所以上面else属于if x > 5,导致当x在 0 到 5 之间时,什么也不输出。如果想让它匹配外层if,需要正确缩进并确保内层if有明确的else或使用elif重新设计逻辑。
避坑指南:嵌套超过两层就要考虑重构,用函数分解逻辑,或者用and/or合并条件。
2. 循环结构:让重复的工作自动化
循环是用来反复执行同一段代码的,Python 提供了while和for两种。
2.1while循环:小心那个永远停不下来的漩涡
while循环的语法:while 条件:,只要条件为真,就不断执行循环体。
经典死循环案例(千万别跑):
python
# 错误示范,会卡死 count = 1 while count <= 5: print(count) # count一直没有变化,条件永远为真
正确做法是必须在循环体内改变条件变量:
python
count = 1 while count <= 5: print(f"第{count}次循环") count += 1 # 让count逐渐变大,直到条件为假while适用于未知循环次数的场景,比如用户输入验证:
python
password = "" while password != "123456": password = input("请输入密码:") print("密码正确,登录成功")这里你无法预知用户要输几次,所以用while比for更自然。
2.2for循环:遍历界的瑞士军刀
for循环专门用来遍历可迭代对象(字符串、列表、字典、元组、集合、range()等),次数明确时优先使用。
基本遍历:
python
fruits = ["苹果", "香蕉", "橘子"] for fruit in fruits: print(f"我喜欢吃{fruit}")使用range()生成整数序列:
range(5):0,1,2,3,4range(1,6):1,2,3,4,5range(1,10,2):1,3,5,7,9
经典累加求和:
python
sum = 0 for i in range(1, 101): sum += i print(sum) # 5050
遍历字典:
python
user = {"name": "Tom", "age": 20, "city": "北京"} for key in user: print(key, user[key]) for key, value in user.items(): print(f"{key}: {value}")不要再写for i in range(len(list))这种“C 语言遗留症”代码了,直接遍历对象又简洁又易读。
2.3 循环控制三兄弟:break、continue、pass
| 关键词 | 作用 | 使用场景 |
|---|---|---|
break | 完全终止当前循环,跳出循环体 | 找到目标后立即退出,提高效率 |
continue | 跳过当前循环剩余代码,进入下一次迭代 | 需要跳过某些不符合条件的元素 |
pass | 占位符,什么都不做 | 还没想好写什么代码时保持语法正确 |
break 示例(猜数字):
python
secret = 66 while True: # 无限循环等待正确输入 guess = int(input("猜一个数:")) if guess == secret: print("猜对啦!") break # 猜中立即跳出循环 elif guess > secret: print("大了") else: print("小了")continue 示例(只打印奇数):
python
for i in range(10): if i % 2 == 0: # 偶数 continue # 跳过后续打印,进入下一次循环 print(i) # 只打印奇数 1,3,5,7,9
2.4 循环嵌套:九九乘法表的秘密
一个循环内部再写一个循环,可以处理二维结构。最经典的例子就是打印九九乘法表:
python
for i in range(1, 10): # 外层控制行 for j in range(1, i+1): # 内层控制列 print(f"{j}*{i}={i*j}\t", end="") print() # 换行输出:
text
1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 ...
需要注意:
外层循环每执行一次,内层循环要完整执行一轮
合理利用
end=""和print()控制输出格式嵌套层数过多会严重影响可读性和性能(O(n²)),遇到三重以上的循环就要思考能否优化
3. 实战避坑:那些年我流过的泪 😭
这些错误我全都犯过,提前告诉你,少走弯路:
❌错误1:忘记缩进或缩进不一致
python
if a > 0: print("正数") # 缩进缺失 -> IndentationError❌错误2:死循环忘记更新变量
用while一定要确保循环体内有改变条件的语句,否则 CPU 哭着跑满。
❌错误3:elif条件顺序错乱导致逻辑丢失
时刻记得:判断有先后,条件要谨慎排列,常见的情况应放在前面。
❌错误4:在for循环中修改被遍历的列表
python
nums = [1,2,3,4,5] for n in nums: if n % 2 == 0: nums.remove(n) # 会导致漏删和索引错乱 print(nums) # 结果不可控
正确做法是遍历副本或使用列表推导式生成新列表。
❌错误5:把=当成==使用if x = 5:绝对报错,判断相等必须用==。
4. 总结反思:从“能看懂”到“会运用”,你还差这一步
分支和循环是编程的骨架,再复杂的系统也是由无数条件判断和循环迭代搭建起来的。阅读代码永远只是输入,动手敲才是内化。不少人跟着教程看一遍觉得自己会了,一关闭页面脑子就空白——这就是“假性学会”。
行动清单:
手打代码:把文中所有示例都自己敲一遍,犯一遍错,加深记忆。
改代码:修改条件、循环变量,预测输出再验证,锻炼“代码脑”。
造轮子:尝试写一些经典小练习(登录验证、猜数字、斐波那契数列、打印图形、计算器菜单等),用实际项目固化知识。
画流程图:遇到复杂逻辑时,拿笔画一画分支流程,比空想有效十倍。
最后提醒一句:不要害怕 Bug,每一个报错都是进步的阶梯。当你终于能轻松用if-elif-else拆解业务逻辑,用for和while优雅地处理数据,你会发现,编程真的可以是一种思维享受。
祝你在 Python 的世界里,少走弯路,多些乐趣。如果这篇博客对你有帮助,不妨点个赞、收藏一下,我们下篇再见!👋