从“死脑筋”到“会思考”:Python if 语句让你的程序学会做选择
你有没有遇到过这种烦恼?写了一段代码,却不管输入什么值都输出同样的结果——程序像个“死脑筋”的机器人,只知道一条路走到黑。比如你本想让它根据天气提醒你带伞,结果它永远输出“今天不用带伞”,哪怕外面暴雨倾盆。这是因为你的程序还没学会“判断”。在Python里,给程序装上“决策引擎”的方式就是 if 语句。它就像你公寓楼下的门禁系统:只有刷卡成功(条件为真),门才会打开;否则你只能吃闭门羹。
一、if 语句的基础:门禁系统
最简单的 if 像一扇单向门:
if 条件:
执行代码
注意冒号和缩进,它们是Python的门缝——不写对,门就打不开。比如你想检查一个数字是否为正数:
num = 5
if num > 0:
print("这个数字是正数")
这里 num > 0 是条件,结果为 True,所以门开了,打印了内容。如果把 num 改成 -3,条件为 False,门纹丝不动。
生活中的例子:你决定今天要不要带零花钱去学校。如果今天是周五(有体育课要买水),你就带5块钱;否则不带。代码就像:
is_friday = True
if is_friday == True: # 判断相等用==
print("今天带5元零花钱")
第一道题正好考察这个基本语法:以下哪个选项的 if 语句语法是正确的?
A. if x > 5: 正确,有冒号,缩进空着也行(但后面必须有代码)
B. if x > 5 少了冒号,报错
C. if x > 5: print("ok") 语法上允许(同一行),但不推荐,缩进不清晰
D. if x > 5:; print("ok") 画蛇添足
最标准且推荐的是A选项的格式,条件后面换行并缩进。
二、if-else:两条路,二选一
只有“如果”不够,你还得处理“否则”。就像门禁卡失效时,你可以走侧门。if-else 就是两条路径:
if 条件:
条件成立做的事
else:
条件不成立做的事
小例子:妈妈给你10元零花钱,如果你帮忙做家务,额外加5元,否则就只有10元。
help_housework = True
money = 10
if help_housework == True:
money = money + 5
print("获得额外5元!")
else:
print("没有额外奖励。")
print("你一共有", money, "元")
注意 else 后面也有冒号,里面的代码同样需要缩进。
第二道题:已知 x = 10,执行下面代码后输出什么?
if x > 5:
print('A')
else:
print('B')
答案是 A。因为 x > 5 是 True,执行 print('A'),else 分支被跳过。这题看起来简单,却暴露了一个重要点:很多新手会误以为 else 总会被执行,但实际只有当前面条件不满足才走 else。条件判断是“从顶向下,一个分支命中即结束”。
三、if-elif-else:多路选择,像自助餐厅的取餐通道
生活中的选择往往不止两个。比如你走进一家自助餐厅,有A、B、C三个取餐区,你只能选一个。if-elif-else 就是这种“多选一”结构:
if 条件1:
做1
elif 条件2:
做2
elif 条件3:
做3
else:
否则做4
程序会从上到下依次检查,遇到第一个成立的条件就执行对应代码,然后跳过所有后面的判断。顺序很重要——范围大的条件要放在前面,否则小范围的条件永远没机会。
游戏里的例子:角色健康值(0~100)显示不同提示。
health = 45
if health >= 80:
print("状态极佳")
elif health >= 50:
print("状态不错")
elif health >= 20:
print("你受伤了")
else:
print("生命垂危")
这里 health >= 80 是最大的范围,放在最前面。如果颠倒顺序,把 health >= 20 放在前面,那么 health=45 就会先匹配 >=20,输出“你受伤了”,后面的判断全被跳过,逻辑就错了。
四、条件怎么写?比较运算与逻辑运算
条件就是求值后得到 True 或 False 的表达式。基本比较有 >, <, >=, <=, ==, !=。组合条件需要用逻辑运算符 and(且)、or(或)、not(非)。
例子:判断一个年龄是否在6到12岁之间(包括两端)。
age = 10
if age >= 6 and age <= 12:
print("你是个小学生")
其实Python也允许直接写 6 <= age <= 12,但初学者用 and 更清晰。
另一个例子:周末或者放假就可以玩游戏。
is_weekend = False
is_holiday = True
if is_weekend or is_holiday:
print("可以玩游戏")
else:
print("今天要学习")
not 常用于取反:如果不是坏天气就去公园。
weather = "下雨"
if not (weather == "下雨" or weather == "下雪"):
print("去公园玩吧")
else:
print("待在家里")
注意括号的使用,它改变了运算顺序,让 or 先结合,再整体取反。
五、新手最容易掉进的坑
- 忘记冒号:
if、else、elif后面必须有英文冒号,否则语法错误。 - 缩进混乱:Python靠缩进判断代码块,同一层必须一致(4个空格或一个Tab,混用会报错)。
- 条件里写了单等号:
if num = 5是赋值,不是判断,会报语法错误。判断相等要写==。 - 把
elif写成else if:Python只有elif,没有else if。 - 条件顺序颠倒:就像前面游戏例子说的,大范围要放在前面,否则小范围条件永远没机会执行。
六、一个完整的示例:成绩等级判定
我们来做一个综合练习,根据考试成绩给出等级和评语。假设满分100分。
score = 88
if score >= 90:
print("等级:优秀")
elif score >= 75:
print("等级:良好")
elif score >= 60:
print("等级:及格")
else:
print("等级:不及格")
# 单独再判断满分或接近满分
if score == 100:
print("太棒了,满分!")
elif score >= 95:
print("差一点满分,继续努力")
运行结果会输出“等级:良好”(因为88在75~89之间)。注意这里最后两个 if-elif 是独立于前面的 if-elif-else 的,它们会单独执行。你可以修改 score 值为55,体验不同分支。
这个例子展示了 if-elif-else 和普通 if 可以混用,但逻辑要清晰:elif 是互斥的,而多个普通 if 是顺序独立的。
七、总结与进阶
if 语句让程序有了“判断力”,从死板执行变成了可以根据情况灵活应变。掌握了它,你就能写出像猜数字游戏、自动评分系统、模拟交通灯等有趣的程序。
但光是 if 还不够,下一步你要学会:
- 循环(for/while):让判断重复执行,比如每天判断要不要带伞。
- 布尔值(True/False):深入理解条件表达式的本质。
- 嵌套if:在if里面再放if,处理更复杂的场景,比如先判断是否有权限,再判断操作类型。
- input():让用户输入数据,让程序真正“活”起来。
当你把 if 和循环、函数配合使用时,你会发现编程不再是一堆线性代码,而是一个有决策能力的“小脑”。
关于作者
我是赵老师,持有 NOI 信息学奥赛教练证书,拥有 15 年以上的软件开发经验,从事信息学少儿编程教学已有 8 年时间。
这些年累计帮助 多名 学生通过编程特长升入自己心仪的目标学校。
如果你在编程学习上有任何疑问,欢迎联系我:18620372957(微信同号)