这节课你要学会

1. 用 if 让电脑判断;2. 用 else 准备"另一条路";3. 用 elif 处理很多种情况;4. 搞懂最最容易搞混的一个符号。

你每天都在做判断

"如果明天下雨,就带伞;否则不带。"你每天说的很多话都是这个句式。现在,我们可以把这种句式教给电脑,它用的词是 if

weather = input("今天下雨吗?(回答 是 或 否)")
if weather == "是":
    print("记得带伞!")
    print("最好穿上雨靴。")
print("祝你今天开心!")
运行结果(回答"是")
今天下雨吗?(回答 是 或 否)是
记得带伞!
最好穿上雨靴。
祝你今天开心!
运行结果(回答"否")
今天下雨吗?(回答 是 或 否)否
祝你今天开心!

看到区别了吗?下雨时,中间两行会打印;不下雨时,直接跳过它们。if 像一个关卡:条件成立才放行,不成立就跳过。

两个必须搞懂的规矩

规矩一:冒号和缩进

if 那一行最后有一个冒号 :,它下面的行前面有 4 个空格。这叫缩进,意思是"这几行归 if 管"。没有缩进的行(最后一行"祝你开心")不归它管,所以永远会执行。

缩进错了,程序要么报错,要么做事的顺序和你想的完全不一样。Python 靠缩进读懂你的程序,缩进就是它的语法

规矩二:== 才是比较,= 是装盒子

全课程最容易搞混的地方

age = 10 意思是"把 10 装进 age 盒子"(赋值)。

age == 10 意思是"age 里的东西等于 10 吗?"(比较,会回答是或否)。

两个等号是提问,一个等号是装东西。if 关卡前必须用提问 ==。写错成一个等号,程序会直接报错提醒你。

六种比较

if 括号里放的是一个"是与否"的问题,可以用这些符号来问:

score = 92
print(score > 90)    # 大于吗?
print(score >= 92)   # 大于或等于吗?
print(score < 60)    # 小于吗?
print(score == 92)   # 等于吗?
print(score != 92)   # 不等于吗?
运行结果
True
True
False
True
False

True 是"真/是",False 是"假/否"。if 看到答案是 True 就放行,是 False 就跳过。

else:另一条路

有时我们想的不只是"做或不做",而是"做这个,否则做那个"。这时用 else(否则):

password = input("请输入密码:")
if password == "1234":
    print("密码正确,欢迎回来!")
else:
    print("密码错误,你不能进来!")

if 和 else 像一个岔路口:两条路必走一条,也只走一条。

elif:很多条岔路

情况不止两种怎么办?比如按分数评价成绩,用 elif(读作"_else if_",否则如果)把岔路加多:

score = int(input("你的分数是?"))
if score >= 90:
    print("太棒了,你是学霸!")
elif score >= 60:
    print("不错,及格啦!")
elif score >= 0:
    print("继续加油,下次一定行!")
else:
    print("喂,分数不能是负数啦!")
运行结果
你的分数是?85
不错,及格啦!

岔路口只走一次

85 分明明也满足"大于等于 0",为什么不说"继续加油"?因为电脑从上往下检查,找到第一个成立的就进去,后面的全不看。所以把条件从严格到宽松排列,才不会出乱子。

组合提问:and 和 or

两个条件可以用 and(并且)、or(或者)连起来:

age = int(input("你几岁?"))
if age >= 6 and age <= 12:
    print("你是小学生!")
else:
    print("你不是小学生。")

and 要求两边都成立才放行;or 只要有一边成立就放行。比如"周末或者放假才能玩游戏"——两天里有一天就行。

动手试一试:秘密暗号门

结合今天所有知识,做一个需要"暗号 + 年龄"双重验证的门:

code = input("请说出暗号:")
age = int(input("你几岁?"))
if code == "芝麻开门" and age >= 10:
    print("大门缓缓打开……欢迎进入秘密基地!")
elif code == "芝麻开门":
    print("暗号对了,但你年龄不够,长大点再来。")
else:
    print("暗号错误!你不可能是自己人。")

练习

基础任务:数字比大小。输入两个数,告诉用户哪个大、哪个小,或者一样大。(提示:要用 elif!三种情况)

进阶任务:BMI 小医生。输入体重(公斤)和身高(米),算出 BMI = 体重 ÷ (身高 × 身高)。BMI 小于 18.5 提示"偏瘦",18.5 到 24 之间提示"正常",否则提示"偏重"。

隐藏挑战:单双数裁判。输入一个数,用 %== 判断它是单数还是双数并打印出来。(提示:任何数 % 2 只会是 0 或 1)

接下来

程序会做选择了!但让它打印 100 遍"我爱你",难道要写 100 行代码?下一课的循环就是解决这个问题的魔法——一行代码,电脑帮你重复一万遍。