目录
一、条件判断
我想让小爱同学在感知到我开门的一瞬间,打开客厅的灯。如果我只说:小爱同学,打开灯。那么,由于缺少开门的前提条件,无论你开不开门,灯都会打开着。所以,我们下的命令应该是这样:小爱同学,如果我开门,你就打开客厅的灯。而这个下命令的如果…就…逻辑,就是与计算机沟通的逻辑——条件判断,其作用就是明确地让计算机知道:在什么条件下,该去做什么。
Python中,条件判断语句总共有三种表现形式:
1.单向判断:if
2.双向判断:if…else…
3.多向判断:if…elif…else…
1.单向判断:if
单向判断:if代表什么呢?举个例子:如果过了30分钟还没写完作业,他就不能出去玩。
你会发现,例子中有一个如果......就。那么,如果我们要用代码来“翻译”这段话,就可以用条件判断语句中的单项判断:if来表述。
代码如下(示例):
# 赋值语句:为时间赋值
time = 31
# 条件:如果你拥做作业的时间大于30分钟
if time > 30:
# 结果:显示‘超过时间,不能出去玩!’的结果
print('超过时间,不能出去玩!')
运行结果如下:
超过时间,不能出去玩!
这段代码是如何实现的呢?
首先,第一行代码,用赋值运算符=对当前情况进行赋值:将做作业时间设定为31分钟赋值给变量——时间time。
第二步,确定if条件:如果变量time的值>时间30时,就执行冒号后,下一行的命令。
第三步,用print()命令打印出结果:超过时间,不能出去玩!。
所以,if语句的单向判断逻辑,我们可以这样归纳:
在这里有个细节:在条件判断代码中的冒号:后、下一行内容的前面,会空几个格。
首先,在计算机的沟通语言中,空格的学名叫缩进,比如我们写文章都要空两个格,这就叫首行缩进。对于Python而言,冒号和缩进是一种语法。它会帮助Python区分代码之间的层次,理解条件执行的逻辑及先后顺序。【注:缩进是四个空格或一个Tab键】
并且,在if条件语言中,缩进不需要我们手动按空格键。当你用英文输入法打:后按回车,我们的开发工具(用来编写Python代码的程序)为了方便大家编程,会自动实现下一行代码,向右缩进的功能。此时,被缩进的内容(print()函数)和if条件语句组成了一个代码块(一个整体),成为了if条件下的内部命令。
这意味着:如果赋值满足if条件,计算机就会准确执行if条件内部的命令(即缩进的代码块)。
小结
我们来小结一下单向判断:if的代码逻辑及语法格式:
2.双向判断:if…else…
如果过了30分钟还没写完作业,他就不能出去玩;如果30分钟内完成作业,他就可以出去玩。
在Python中,我们可以利用if的双向判断形式:if…else…去实现这个。
代码如下(示例):
# 赋值语句:为时间赋值
time = 25
# 条件:如果你拥做作业的时间大于30分钟
if time > 30:
# 结果:显示‘超过时间,不能出去玩!’的结果
print('超过时间,不能出去玩!')
# 条件:当赋值不满足if条件时,执行else下的命令
else:
# 结果:显示‘可以出去玩了!’的结果
print('可以出去玩了!')
运行结果如下:
可以出去玩了!
很多时候,我们不能把鸡蛋放在一个篮子里,要做好两手准备:如果不满足条件时,我们要怎么办。
Python则很贴心地,让我们借用if…else…语句,让码农们有了另一种选择——【如果…不满足,就…】
小结
在if...else条件语句中,if和else各自抱团,形成两个不同的代码块。表示的是条件和其他条件的互斥关系——如果不满足if条件,就执行else其他条件。
3.多向判断:if…elif…else…
如果过了30分钟还没写完作业,他就不能出去玩;如果20分钟完成作业,他就可以出去玩;如果20分钟内完成作业,他就可以出去玩,还有奖励哦!
当判断的条件超过3个时,中间的多个条件都可以使用elif(如图)。
代码如下(示例):
# 赋值语句:为时间赋值
time = 15
# 条件:如果你拥做作业的时间大于30分钟
if time > 30:
# 结果:显示‘超过时间,不能出去玩!’的结果
print('超过时间,不能出去玩!')
# 条件:如果完成作业时间小于30分钟,大于等于20分钟
elif 20 <= time < 30
# 结果:显示‘可以出去玩了!’的结果
print('可以出去玩了!')
# 条件:当赋值不满足if和elif条件时,执行else下的命令
else:
# 结果:显示‘可以出去玩,还有奖励哦!’的结果
print('可以出去玩,还有奖励哦!')
运行结果如下:
可以出去玩,还有奖励哦!
小结
通过上面if和else的了解,多向判断elif的逻辑就很好理解了。
二、if嵌套
1.if嵌套
if嵌套的应用场景,简单来讲就是:在基础条件满足的情况下,再在基础条件底下增加额外的条件判断。
考试成绩评价规则:
1. 如果成绩大于等于60分,就是及格,在此前提下:
(1)如果成绩大于等于80分,属于优秀范围;
(2)否则(即大于等于60分而小于80分),属于一般范围。
2. 如果成绩小于60分,就是不及格,在此前提下:
(1)如果成绩小于30分,平时太不认真,属于学渣了;
(2)如果成绩(小于60分而大于等于30分),那么,至少还能抢救一下。
像上面的基础条件是60分及格,想要判断优秀和一般还要增加额外条件——是否大于等于80;在小于60分不及格基础条件下,想要判断学渣和可抢救还要增加额外条件——是否大于等于30。
用if嵌套可以像下方代码这样:
historyscore = 33
if historyscore >= 60: #代码组1
print('你已经及格')
if historyscore >= 80:
print('你很优秀')
else:
print('你只是一般般')
else: #代码组2
print('不及格')
if historyscore < 30:
print('学渣')
else:
print('还能抢救一下')
print('程序结束')
运行结果如下:
不及格
还能抢救一下
程序结束
2.if嵌套的执行顺序
首先,我们看上段代码,先从整体总览一下,这段成绩评价规则的代码,总共分为四部分【赋值、if、else、print()】,两个大代码组。
并且,在代码组1的if条件和代码组2的else的条件下,又包含了条件判断命令if...else...。
缩进相同的命令处于同一个等级,第一步,计算机就要按顺序一条一条地执行命令。
那么,计算机执行的顺序就是:
(1)先给historyscore赋值;
(2)因为if和else是只能留一个的互斥关系,if和else下的代码块只会执行一个,所以计算机要判断赋值的内容满足【historyscore>=60】还是【historyscore<60】的条件——如果满足if的条件,就执行if缩进下的内容,如果不满足就执行else缩进下的内容;
(3)执行print('程序结束')。
3.小结
通过以上的的内容,可以总结为下图: