从这一篇开始,我们正式进入第三阶段。前面你学的是数据和判断条件,现在终于轮到程序真正“做选择”了。
前面你已经学过布尔值、比较运算符、逻辑运算符。
你知道:
age >= 18 会得到 True 或 Falsescore >= 60 and age >= 18 也是一个真假结果 程序其实已经能够判断条件是否成立
可到这里,还差最后一步。
程序虽然知道条件是真是假, 但它还没有真正根据这个结果去“做事”。
比如:
如果年龄大于等于 18,就输出你已经成年 如果成绩大于等于 60,就输出考试及格 如果用户名正确,就提示登录成功 如果库存大于 0,就提示可以购买
你会发现,这些场景里最关键的词其实都是:
如果
而 Python 里负责表达“如果”的,就是今天要讲的主角:
if
这一篇,我们就把最基础的 if 判断讲透。 你学完以后,程序就不再只是接收数据、打印结果了。 它会开始根据不同情况,做出不同反应。
一、什么是 if 判断语句
先说最直白的理解。
if 的作用就是:
如果某个条件成立,就执行一段代码。
你可以把它理解成程序里的“如果……就……”。
比如生活里,你经常会说:
如果下雨,就带伞 如果饿了,就去吃饭 如果成绩及格,就告诉家长 如果余额够,就下单购买
这类表达方式,本质上就是条件判断。
Python 只是把这种生活里的思维,翻译成了代码。
二、先看第一个最简单的 if 程序
直接上代码:
age = 20if age >= 18: print('你已经成年')
这段代码的意思非常直接:
如果 age >= 18 成立, 就执行下面那句 print('你已经成年')
因为现在 age 是 20, 条件 age >= 18 成立, 所以运行结果会是:
你已经成年
这就是最基础的 if 判断。
三、把这段代码翻译成人话,你会更容易懂
还是刚才这段:
age = 20if age >= 18: print('你已经成年')
你可以直接把它翻译成下面这句话:
如果年龄大于等于 18,就打印“你已经成年”
你以后学 if,一定要养成这个习惯。 不要光盯着代码看, 要把它翻译成人话。
因为 if 本来就不是什么高深概念。 它只是把日常语言里的“如果……就……”写成程序规则而已。
四、if 的基本结构长什么样
最基础的 if 结构其实非常固定。
if 条件: 条件成立时要执行的代码
你可以从上到下理解:
第一步,先写 if第二步,后面跟一个条件 第三步,条件后面要有冒号 第四步,下一行开始缩进,写条件成立时执行的代码
这四点里,新手最容易漏掉两个地方:
漏掉冒号 忘记缩进
所以你现在就先记牢:
if 后面一定有冒号 下面执行的代码一定要缩进
五、为什么 if 后面一定要有冒号
因为 Python 用冒号告诉程序:
条件写完了 下面要开始进入这个条件对应的代码块了
比如:
if age >= 18: print('你已经成年')
这个冒号就像一个提示牌,告诉 Python:
下面缩进进去的内容,属于这个 if
如果你漏掉冒号,比如写成:
if age >= 18 print('你已经成年')
程序通常就会报错。
所以这不是风格问题, 而是语法要求。
六、为什么 if 下面的代码一定要缩进
因为 Python 用缩进来表示代码归属。
比如:
if age >= 18: print('你已经成年')
这里 print() 前面缩进了, 就表示这句代码属于 if 条件下面。
如果你不缩进,程序就会搞不清楚:
这句代码到底是不是条件成立时才执行
所以在 Python 里:
冒号表示要开始一个代码块 缩进表示哪些代码属于这个代码块
这个规则你后面写循环、函数时也会一直用到。
七、if 最关键的一步,不是写 if,而是先想清楚条件
很多新手刚开始学 if 时,容易只盯着格式。 其实真正更关键的是:
你到底想判断什么
比如这些条件都很典型:
age >= 18score >= 60name == '小明'password == '123456'stock > 0
你要学会先把问题想清楚,再写代码。
比如你想做“是否成年”的判断, 条件就是:
age >= 18
你想做“是否及格”的判断, 条件就是:
score >= 60
你想做“用户名是否正确”的判断, 条件就是:
username == 'admin'
所以 if 的重点不只是语法, 更是你有没有把判断标准想明白。
八、if 判断的是布尔结果
这个地方要和前面知识连起来。
你前面学过,像下面这样的表达式:
age >= 18score >= 60name == '小明'
它们最后的结果不是数字, 而是布尔值:
True 或 False
而 if 做的事情,其实就是:
先看这个条件的结果是不是 True
如果是 True,就执行下面的代码。 如果是 False,就跳过下面的代码。
所以你可以把 if 理解成一个看门员。
条件为真,放行 条件为假,不放行
九、先做一个最基础的成绩判断程序
这个例子特别适合入门。
score = int(input('请输入成绩:'))if score >= 60: print('成绩及格')
如果你输入:
80
程序会输出:
成绩及格
如果你输入:
50
程序就不会输出任何东西。
这就是最基础的 if 行为:
条件成立,执行 条件不成立,什么都不做
你现在要先适应这种特点。 不是所有程序都一定会有输出。 有时候条件不满足,它就安静跳过。
十、为什么有时候运行了 if,什么都没打印
这其实是很多新手第一次学 if 时最容易不安的地方。
比如你写:
score = int(input('请输入成绩:'))if score >= 60: print('成绩及格')
如果输入 50,程序没有任何输出。 有些人会怀疑是不是程序坏了。
其实不是。
只是因为条件 score >= 60 不成立, 所以 if 下面那句代码没有执行。
这正是 if 的正常行为。
你现在先记住:
if 不是保证下面代码一定执行 而是看条件决定执不执行
十一、自己动手做一个年龄判断练习
下面这个练习建议你现在就敲一遍。
age = int(input('请输入你的年龄:'))if age >= 18: print('你已经成年')
你分别输入:
20 18 17
看看结果有什么不同。
这个练习很简单, 但特别重要。 因为它能让你第一次真正感受到:
程序开始根据不同输入,做出不同反应了
这就是条件判断的起点。
十二、if 下面可以不止一行代码
这一点你要尽早知道。
不是说 if 下面只能写一句。 只要你缩进一致,写几句都可以。
比如:
age = int(input('请输入你的年龄:'))if age >= 18: print('你已经成年') print('可以自己做很多决定') print('欢迎继续学习 Python')
如果条件成立,这三句都会执行。
所以你可以把 if 看成一个开关。
条件成立,整个缩进块一起执行。 不是只执行第一句。
十三、自己感受一下“代码块”这个概念
来看下面这段:
score = int(input('请输入成绩:'))if score >= 60: print('成绩及格') print('继续保持') print('下次争取更高分')
如果输入 85, 这三句都会输出。
可如果输入 50, 这三句都不会输出。
这就说明什么。
说明 if 不是控制某一行, 而是在控制一个完整的代码块。
而这个代码块,是靠缩进识别出来的。
所以你以后看到缩进时, 脑子里要开始建立一个感觉:
这些缩进去的代码,是同一组
十四、可以把 if 和变量结合起来,让代码更清楚
比如你前面学过布尔值。 那你完全可以先把判断结果存起来,再交给 if。
例如:
age = int(input('请输入年龄:'))is_adult = age >= 18if is_adult: print('你已经成年')
这段代码和下面这个版本效果一样:
age = int(input('请输入年龄:'))if age >= 18: print('你已经成年')
只不过前一种写法更容易读。 尤其是条件越来越复杂时,这种拆开写会很有帮助。
对新手来说,这种风格特别值得模仿。
十五、字符串判断也可以配合 if 使用
前面你已经学过字符串比较。 现在把它和 if 连起来,就很自然了。
比如:
name = input('请输入你的名字:')if name == '小明': print('欢迎你,小明')
如果用户输入的是:
小明
程序就会输出欢迎信息。
如果输入的是别的名字, 程序就不会输出这句。
你会发现,这其实已经特别像真实程序逻辑了。
不是所有输入都一样处理, 而是看输入内容决定怎么回应。
十六、再做一个最简单的密码判断程序
这个例子也特别经典。
password = input('请输入密码:')if password == '123456': print('密码正确')
如果用户输入正确密码, 程序就提示密码正确。
如果输入错误, 程序暂时什么都不做。
这虽然还很简单, 但已经非常像真实验证场景了。
你现在最好自己多试几组输入, 亲手感受一下条件成立和不成立时的差别。
十七、if 条件里不一定非要比较运算,也可以直接用布尔值
比如:
is_login = Trueif is_login: print('用户已登录')
因为 is_login 本身就是布尔值, 所以 if 可以直接判断它。
再比如:
is_vip = Falseif is_vip: print('欢迎尊贵会员')
因为这里 is_vip 是 False, 所以 print() 不会执行。
这说明:
if 后面不一定非得写 age >= 18 这种比较式 也可以直接放一个布尔变量
这个你后面会经常见到。
十八、自己做一个“是否有库存”的练习
这个练习很实用。
stock = int(input('请输入库存数量:'))if stock > 0: print('商品还有库存')
你可以输入:
10 1 0
看看结果区别。
这个例子特别贴近真实业务。 因为很多系统里,库存判断本来就是一个最典型的 if 场景。
十九、if 条件成立时执行,条件不成立时跳过,这一点一定要形成直觉
你现在可以把 if 彻底记成一句最朴素的话:
条件真,就执行 条件假,就跳过
比如:
money = float(input('请输入余额:'))if money >= 100: print('余额充足')
输入 200,输出“余额充足” 输入 50,没有输出
这就是 if 的最核心行为。
你把这一条形成直觉, 后面 if...else...elif 都会更好理解。
二十、if 最容易犯的几个语法错误
第一个,漏掉冒号。
错误写法:
if age >= 18 print('你已经成年')
正确写法:
if age >= 18: print('你已经成年')
第二个,忘记缩进。
错误写法:
if age >= 18:print('你已经成年')
正确写法:
if age >= 18: print('你已经成年')
第三个,条件写错成赋值。
比如本来想写比较,却写成一个等号。 这个问题在 if 里特别常见,所以一定要记住:
判断相等,用 ==不是 =
二十一、if 条件可以写得很简单,也可以慢慢变复杂
先看简单的:
if score >= 60: print('及格')
再看稍微复杂一点的:
if age >= 18and score >= 60: print('成年且及格')
你会发现,本质没变。 无论条件简单还是复杂,if 的规则都一样:
只要后面的条件最终结果是 True, 就执行下面的代码块。
所以你现在不用怕复杂条件。 你只要记住,最后它总归还是会变成一个真假结果。
二十二、自己动手做一个综合小练习
下面这个程序很适合你现在做。
需求:
输入姓名、年龄、成绩 如果年龄大于等于 18,就打印“你已成年” 如果成绩大于等于 60,就打印“你已及格”
代码如下:
name = input('请输入姓名:')age = int(input('请输入年龄:'))score = int(input('请输入成绩:'))if age >= 18: print(f'{name},你已经成年')if score >= 60: print(f'{name},你的成绩及格')
这个例子特别值得你体会一下。
这里写了两个 if。 它们彼此独立。
也就是说:
年龄条件成立,就打印成年提示 成绩条件成立,就打印及格提示
两个条件互不影响。
这也是 if 很基础但很重要的一个感觉。
二十三、再做一个“用户登录提示”练习
这个练习也很适合公众号读者跟着做。
username = input('请输入用户名:')password = input('请输入密码:')if username == 'admin': print('用户名正确')if password == '123456': print('密码正确')
你可以多试几次:
用户名对,密码错 用户名错,密码对 用户名和密码都对
观察程序分别会输出什么。
这个练习特别好,因为它能让你感受到:
程序不是只能处理一个判断 它可以连续做多个判断
二十四、今天一定要亲手完成的 3 个小练习
第一个,年龄判断练习。
age = int(input('请输入年龄:'))if age >= 18: print('你已经成年')
第二个,成绩判断练习。
score = int(input('请输入成绩:'))if score >= 60: print('成绩及格')
第三个,字符串判断练习。
name = input('请输入姓名:')if name == '小明': print('欢迎你,小明')
这三个练习你一定要自己敲一遍, 而且要多换几组输入试试。 条件判断这种东西,靠看不如靠试。
二十五、写在最后
前面你学了数据类型,学了布尔值,学了比较运算和逻辑运算。 这些东西看起来像是一个个零件。
而从这一篇开始,零件终于开始“运转”了。
因为 if 的出现,意味着程序不再只是被动地接收输入、打印输出。 它开始会判断了。 会选择了。 会根据不同情况,走不同路线了。
这一步特别关键。
你现在学的,不只是一个语法。 而是程序最核心的一种能力:
根据条件做决定
这件事一旦掌握,后面很多真正像样的程序逻辑,才有可能写出来。
本文小结
if 用来表示“如果条件成立,就执行某段代码”。 最基本结构是:
if 条件: 条件成立时执行的代码
if 后面必须有冒号,下面的代码必须缩进。if 判断的本质,是看条件最终结果是不是 True。 条件成立就执行,条件不成立就跳过。if 可以配合数字比较、字符串比较、布尔变量一起使用。 学习 if 最关键的,不只是记语法,而是把代码翻译成“如果……就……”的人话思维。
下篇预告
第 22 篇,我们继续把条件判断往前推进。
if...elif...else:多条件判断怎么写更清晰
到那一篇,你就会知道,程序不只是会做一个简单选择,它还可以在多个可能里,选出最合适的那一个。