Python基础语法(2)

Python基础语法(2)_第1张图片

比方说,我想让天猫精灵在感知到我开门的一瞬间,打开客厅的灯。如果我只说:天猫精灵,打开灯。那么,由于缺少开门的前提条件,无论你开不开门,灯都会打开着。
所以,我们下的命令应该是这样:天猫精灵,如果我开门,你就打开客厅的灯。
而这个下命令的如果…就…逻辑,就是与计算机沟通的逻辑——条件判断,其作用就是明确地让计算机知道:在什么条件下,该去做什么。


Python基础语法(2)_第2张图片

对于Python也是同样。Python之所以能完成自动化任务,比如自动抓取网页关键词,自动下载小电影等,就是因为它可以执行条件判断。

一、条件判断

Python基础语法(2)_第3张图片

在Python宇宙,条件判断语句总共有三种表现形式,我们先从最简单的单向判断:if开始说起:
1.单向判断:if


Python基础语法(2)_第4张图片
Python基础语法(2)_第5张图片
Python基础语法(2)_第6张图片

首先,在计算机的沟通语言中,空格的学名叫缩进,比如我们写文章都要空两个格,这就叫首行缩进。
对于Python而言,冒号和缩进是一种语法。它会帮助Python区分代码之间的层次,理解条件执行的逻辑及先后顺序。【注:缩进是四个空格或一个Tab键】
并且,在if条件语言中,缩进不需要我们手动按空格键。当你用英文输入法打:后按回车,我们的开发工具(用来编写Python代码的程序)为了方便大家编程,会自动实现下一行代码,向右缩进的功能。
此时,被缩进的内容(print()函数)和if条件语句组成了一个代码块(一个整体),成为了if条件下的内部命令。
这意味着:如果赋值满足if条件,计算机就会准确执行if条件内部的命令(即缩进的代码块)。


Python基础语法(2)_第7张图片

是不是会出现IndentationError: expected an indented block(缩进错误:期望一个缩进块)的报错?
这是因为,当我们去掉缩进时,if条件和print命令成为了两个不同的代码组,属于平行关系。你看:if条件下面,缺少了可以执行的动作。我们想一下:无论条件成不成立,都不会执行什么操作,这个条件的存在没有任何意义。
Python基础语法(2)_第8张图片

当第一行赋值情况的前提不满足if的条件时,Python的逻辑就会判断:条件不满足,无法执行if条件下的命令,从而自动跳过,执行下一行命令。
Python基础语法(2)_第9张图片

2.双向判断:if…else…


Python基础语法(2)_第10张图片
Python基础语法(2)_第11张图片
Python基础语法(2)_第12张图片
Python基础语法(2)_第13张图片
Python基础语法(2)_第14张图片
Python基础语法(2)_第15张图片

3.多向判断:if…elif…else…
Python基础语法(2)_第16张图片

在判断3个或3个以上的条件时,我们就需要借助Python中的多向判断命令:if…elif…else…。
这三者共同构成了多向判断的命令逻辑关系:如果if的条件不满足,就按顺序看是否满足elif的条件,如果不满足elif的条件,就执行else的命令。
并且,当判断的条件超过3个时,中间的多个条件都可以使用elif。
Python基础语法(2)_第17张图片

首先,第一行的赋值,会按照从上到下的顺序挨个试一遍,看自己满足哪个条件,满足了就不往下走,不满足就继续试,试到出结果为止。
其次,elif的运行本质上和else一样,已经带有其他条件的意思,所以elif后可以不接else。
Python基础语法(2)_第18张图片

二、if嵌套

Python基础语法(2)_第19张图片

像这种如果底下还有如果、条件里还套条件的情况,我们如何用Python把上面的规则写出来,并得出评价呢?


Python基础语法(2)_第20张图片

就像上面的基础条件是60分及格,想要判断优秀和一般还要增加额外条件——是否大于等于80。
historyscore=26
if historyscore>=60:
print('你已经及格')
if historyscore>=80:
print('你很优秀')
else:
print('你只是一般般')
else:
print('不及格')
if historyscore<30:
print('学渣')
else:
print('还能抢救一下')
print('程序结束')


Python基础语法(2)_第21张图片

首先,我们先从整体总览一下,这段彼得·帕克成绩评价规则的代码,总共分为四部分【赋值、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('程序结束')。


Python基础语法(2)_第22张图片
Python基础语法(2)_第23张图片

要注意的是,elif也是可以放进嵌套里的。

三、如何写嵌套代码

Python基础语法(2)_第24张图片

if嵌套由于涉及多个条件判断,并且是条件套条件的判断,所以为了理清逻辑,我们可采用扒洋葱大法写if嵌套。
用“彼得·帕克的历史成绩”举例,第一步就要搞定最外层那张皮,将最基础的命令和条件写出来。
那么,我们的思考逻辑应该是这样(1)把彼得·帕克26分的历史成绩赋给变量historyscore;(2)用if…else写最基础判断条件如果historyscore>=60时,打印你已经及格,否则,打印不及格;(3)用print()输出程序结束。
根据上面提示写一遍代码,并点击运行。看在成绩为26分的赋值情况下,只套了一层“条件判断”皮的代码,会出现怎样的结果:


Python基础语法(2)_第25张图片

第二步,在“第一层皮”里装东西。也就是在条件【historyscore>=60】下,增加额外条件。
其中,额外条件1:当历史成绩大于80分,显示结果你很优秀;额外条件2:当历史成绩在60到80分之间,显示结果:你只是一般般。写出程序:
historyscore=26
.#赋值语句:为历史成绩赋值
if historyscore>=60:
.#条件:当历史成绩大于等于60时
print('你已经及格')
.#结果:输入及格的结果
if historyscore>=80:
. #条件:当历史成绩大于等于60,且历史成绩大于等于80
print('你很优秀')
.#结果:输出你很优秀的结果
else:
.#条件:当历史成绩大于等于60,且小于80时
print('你只是一般般')
.#结果:输出你只是一般般的结果
else:
.#条件:当历史成绩小于60时
print('不及格')
.#结果:输出不及格的结果
print('程序结束')
.#打印最终结果
最后一步,你要为另一个大条件else增加额外条件了!
请你以下方代码框中的代码为基础,在else底下增加两个额外条件。
其中,额外条件1:当历史成绩小于60,同时还小于30时,输出结果学渣;额外条件2:当历史成绩小于60,但大于等于30时,输出结果还能抢救一下。
historyscore=26
if historyscore>=60:
print('你已经及格')
if historyscore>=80:
print('你很优秀')
else:
print('你只是一般般')
else:
print('不及格')
if historyscore<30:
print('学渣')
else:
print('你还能补救一下')
print('程序结束')


Python基础语法(2)_第26张图片

课后练习:
请你写出一段代码,判断美国队长的工资每月80美元属于什么水平。
其中判断工资水平的代码需要满足如下条件:
1.如果月工资小于等于500美元,显示“欢迎进入史塔克穷人帮前三名”
1.1如果月工资在100-500美元之间,显示“请找弗瑞队长加薪”
1.2如果月工资小于等于100美元,显示“恭喜您荣获“美元队长”称号!”

2.如果月工资在500-1000美元之间(含1000美元),打印“祝贺您至少可以温饱了。”
3.其他情况下,如果工资大于1000美元,打印“经济危机都难不倒您!”
3.1如果工资在1000-20000美元(含20000美元)之间,打印“您快比钢铁侠有钱了!”
3.2如果月工资大于20000美元,打印“您是不是来自于瓦坎达国?”
4.不管赋值改变后输出结果如何,都需固定打印“程序结束”
money=10000
if money<500:
print('欢迎进入史塔克穷人帮前三名')
if money>=100:
print('请找弗瑞队长加薪')
else:
print('''恭喜您荣获“美元队长”称号''')
elif money<=1000:
print('祝贺您至少可以温饱了。')
else:
print('经济危机都难不倒您!')
if money>20000:
print('您快比钢铁侠有钱了!')
else:
print('您是不是来自于瓦坎达国?')
print('程序结束')

你可能感兴趣的:(Python基础语法(2))