目录

条件判断

单向判断:if

双向判断:if…else…

多向判断:if…elif…else…

if嵌套

if嵌套的执行顺序

如何写嵌套代码

小练习1

小练习2


对于Python来讲,需要正确的【沟通逻辑】才能让Python准确地执行你的命令。

比方说,我想让天猫精灵在感知到我开门的一瞬间,打开客厅的灯。如果我只说:天猫精灵,打开灯。那么,由于缺少开门的前提条件,无论你开不开门,灯都会打开着。

所以,我们下的命令应该是这样:天猫精灵,如果我开门,你打开客厅的灯。

而这个下命令的如果…就…逻辑,就是与计算机沟通的逻辑——条件判断,其作用就是明确地让计算机知道:在什么条件下,该去做什么。

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

import timeprint('如果你想拥有无限的力量和能量,那必须夺得力量宝石')time.sleep(2)print('如果你想扭曲时空和任意地传送,那必须夺得空间宝石')time.sleep(2)print('如果你想任意地修改现实,无视任何宇宙规律,那必须夺得现实宝石')time.sleep(2)print('如果你想到达任何一个时间点,无论是古老的年代还是遥远的未来,那必须夺得时间宝石')time.sleep(2)print('如果你想控制生者和死者的灵魂,那必须夺得灵魂宝石')time.sleep(2)print('如果你想拥有不朽的精神力量并操控任何人的思维,那必须夺得心灵宝石')time.sleep(2)print('那么,如果让你来选择的话,你想要获得哪颗宝石呢?')time.sleep(2)print('请在以下六个选项【1 力量宝石 ;2 空间宝石;3 现实宝石 ;4 时间宝石;5 灵魂宝石 ;6 心灵宝石;】中,选择你最想获得的宝石吧!')time.sleep(3)answer=input('请将对应数字输入在冒号后: ')if answer=='1':print('我告诉你哦,力量宝石保存在山达尔星的新星军团的总部基地')time.sleep(3)elif answer=='2':print('空间宝石在洛基手里')time.sleep(3)elif answer=='3':print('雷击已将现实宝石交给收藏家保管')time.sleep(3)elif answer=='4':print('奇异博士愿意用时间宝石换取钢铁侠的性命')time.sleep(3)elif answer=='5':print('必须献祭自己心爱的人才能得到灵魂宝石')time.sleep(3)else:print('幻视头上的心灵宝石被绯红女巫摧毁,但可用时间宝石复原')time.sleep(3)

如果你想拥有无限的力量和能量,那必须夺得力量宝石
如果你想扭曲时空和任意地传送,那必须夺得空间宝石
如果你想任意地修改现实,无视任何宇宙规律,那必须夺得现实宝石
如果你想到达任何一个时间点,无论是古老的年代还是遥远的未来,那必须夺得时间宝石
如果你想控制生者和死者的灵魂,那必须夺得灵魂宝石
如果你想拥有不朽的精神力量并操控任何人的思维,那必须夺得心灵宝石
那么,如果让你来选择的话,你想要获得哪颗宝石呢?
请在以下六个选项【1 力量宝石 ;2 空间宝石;3 现实宝石 ;4 时间宝石;5 灵魂宝石 ;6 心灵宝石;】中,选择你最想获得的宝石吧!
请将对应数字输入在冒号后: 4
奇异博士愿意用时间宝石换取钢铁侠的性命

亲爱的夺宝骑兵,你看到没?这就是条件判断如果…就…逻辑产生的魔法。那么,这个条件判断的代码,要怎么码呢?

条件判断

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

单向判断:if

单向判断:if代表什么呢?相传上面的六颗宝石是宇宙中最强大的东西。如果一个人同时拥有六颗宝石,ta可以实现包括毁灭宇宙在内的所有事情。

你发现,上面的故事中,有一个如果……就。那么,如果我们要用代码来“翻译”这段话,就可以用条件判断语句中的单项判断:if来表述。

# 为宝石数量赋值
stonenumber=6# 条件:如果你拥有的宝石数量大于等于6个
if stonenumber>=6:# 结果:显示‘你拥有了毁灭宇宙的力量’的结果print('你拥有了毁灭宇宙的力量')  

你拥有了毁灭宇宙的力量

那么,这段代码是如何实现的呢?

首先,第一行代码,用赋值运算符=对当前情况进行赋值:将你拥有的宝石个数6赋值给变量——宝石数stonenumber

第二步,确定if条件:如果变量stonenumber的值>=个数6时,就执行冒号后,下一行的命令。

第三步,用print()命令打印出结果:你拥有了毁灭宇宙的力量。所以,if语句的单向判断逻辑,我们可以这样归纳:

在这里,你可能注意到了一个细节:在条件判断代码中的冒号:后、下一行内容的前面,会空几个格,但这是为什么呢?

首先,在计算机的沟通语言中,空格的学名叫缩进,比如我们写文章都要空两个格,这就叫首行缩进

对于Python而言,冒号和缩进是一种语法。它会帮助Python区分代码之间的层次,理解条件执行的逻辑及先后顺序。【注:缩进是四个空格或一个Tab键】

并且,在if条件语言中,缩进不需要我们手动按空格键。当你用英文输入法打:后按回车,我们的开发工具(用来编写Python代码的程序)为了方便大家编程,会自动实现下一行代码,向右缩进的功能。

此时,被缩进的内容(print()函数)和if条件语句组成了一个代码块(一个整体),成为了if条件下的内部命令

这意味着:如果赋值满足if条件,计算机就会准确执行if条件内部的命令(即缩进的代码块)。

以下是错误的代码,运行之后会报错:

# 赋值语句:为宝石数量赋值
stonenumber=6# 条件:如果你拥有的宝石数量大于等于6个
if stonenumber>=6:# 结果:显示‘你拥有了毁灭宇宙的力量’的结果
print('你拥有了毁灭宇宙的力量')

IndentationError: expected an indented block

这是因为,当我们去掉缩进时,if条件和print命令成为了两个不同的代码组,属于平行关系。你看:if条件下面,缺少了可以执行的动作。我们想一下:无论条件成不成立,都不会执行什么操作,这个条件的存在没有任何意义。

# 为宝石数量赋值
stonenumber=2# 条件:如果你拥有的宝石数量大于等于6个
if stonenumber>=6:# 结果:显示‘你拥有了毁灭宇宙的力量’的结果print('你拥有了毁灭宇宙的力量')   

这时,你可能会在心里犯嘀咕:为什么连个报错都没有呢?那么,我来解释一下这是怎么回事。

首先,第一行的赋值语句【stonenumber=2】是后面if条件判断语句的前提情况,然而并不满足『stonenumber>=6』这个条件,所以不会执行条件下的『print』操作。

计算机是一行行往下执行代码的。所以,当第一行赋值情况的前提不满足if的条件时,Python的逻辑就会判断:条件不满足,无法执行if条件下的命令,从而自动跳过,执行下一行命令。

但是,在上方代码中,除了if之外,我们并没有设置其他的命令去让Python执行。因此,Python自然就无法输出结果。

也就是说,由于宝石数量只有2,没有满足6颗宝石的if条件,if条件下的打印命令就无法生效,自然没办法获得摧毁宇宙的力量。

而作为最强反派,灭霸当然不会就此善罢甘休。他要继续寻找宝石,直到集齐6颗,达到他的目的。

那么,这个如果6颗宝石的条件没满足就做其他事情——寻找宝石的判断,在Python中要如何实现呢?

双向判断:if…else…

在Python宇宙,我们可以利用if的双向判断形式:if…else…去实现这个行动。

# 赋值语句:为宝石数量赋值
stonenumber=3# 条件:如果你拥有的宝石数量大于等于6个
if stonenumber>=6:# 结果:显示‘你拥有了毁灭宇宙的力量’的结果print('你拥有了毁灭宇宙的力量')# 条件:当赋值不满足if条件时,执行else下的命令
else:# 结果:显示‘去找灵魂宝石’的结果print('带着卡魔拉去沃弥尔星寻找灵魂宝石')

带着卡魔拉去沃弥尔星寻找灵魂宝石

很多时候,我们不能把鸡蛋放在一个篮子里,要做好两手准备:如果不满足条件时,我们要怎么办。

Python则很贴心地,让我们借用if…else…语句,让码农们有了另一种选择——【如果…不满足,就…】

if...else条件语句中,ifelse各自抱团,形成两个不同的代码块。表示的是条件其他条件的互斥关系——如果不满足if条件,就执行else其他条件

如果用我们上面宝石的例子讲解的话,if定义的就是宝石数>=6,而else定义的则是宝石数<6

而由于赋值【stonenumber=3】,并不满足【if stonenumber>=6:】这个条件,所以不能执行【print('你拥有了毁灭宇宙的力量')】的命令。

只能走第二条else:的路——执行print('带着卡魔拉去沃弥尔星寻找宝石')的结果。

weight=101if weight>100:print('不吃宵夜')else:print('放心吃宵夜')

不吃宵夜

多向判断:if…elif…else…

在判断3个或3个以上的条件时,我们就需要借助Python中的多向判断命令:if…elif…else…

这三者共同构成了多向判断的命令逻辑关系:如果if的条件不满足,就按顺序看是否满足elif的条件,如果不满足elif的条件,就执行else的命令。

并且,当判断的条件超过3个时,中间的多个条件都可以使用elif

# 为宝石数量赋值
stonenumber=5# 条件:如果你拥有的宝石数量大于等于6个
if stonenumber>=6:# 结果:显示‘就拥有了毁灭宇宙的力量’的结果print('你拥有了毁灭宇宙的力量')# 条件:如果想让宝石数量停留在5个以下,至少一个
elif 0<stonenumber<=5:# 结果:显示‘绯红女巫需要亲手毁掉幻视额头上的心灵宝石’的结果print('绯红女巫需要亲手毁掉幻视额头上的心灵宝石')# 条件:当赋值不满足if和elif条件时,执行else下的命令,宝石数量为0个
else:# 结果:显示‘需要惊奇队长逆转未来’的结果print('需要惊奇队长逆转未来')

绯红女巫需要亲手毁掉幻视额头上的心灵宝石

通过上面ifelse的积累,多向判断elif的逻辑是不是很好理解?

首先,第一行的赋值,会按照从上到下的顺序挨个试一遍,看自己满足哪个条件,满足了就不往下走,不满足就继续试,试到出结果为止。

其次,elif的运行本质上和else一样,已经带有其他条件的意思,所以elif后可以不接else

比如上面的代码,stonenumber=5会对下面的if elif else条件逐个扫描,看看自己满足哪一个,就执行哪个条件底下的命令。

很显然,第二个条件elif 0<stonenumber<=5刚好能与stonenumber=5的前提相匹配,于是,执行elif底下的命令:print('绯红女巫需要亲手毁掉幻视额头上的心灵宝石')**。

总结一下elif的知识点:

if嵌套

来看一组规则:

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

答案就是——嵌套条件

if嵌套的应用场景,简单来讲就是:在基础条件满足的情况下,再在基础条件底下增加额外的条件判断。

就像上面的基础条件是60分及格,想要判断优秀一般还要增加额外条件——是否大于等于80;在小于60分不及格基础条件下,想要判断学渣可抢救还要增加额外条件——是否大于等于30。

因此,成绩评价规则,用if嵌套可以像下方代码这样:

historyscore=26if historyscore>=60:print('你已经及格')if historyscore>=80:print('你很优秀')else:print('你只是一般般')else:print('不及格')if historyscore<30:print('学渣')else:print('还能抢救一下')print('程序结束')

不及格
学渣
程序结束

居然出现了三个扎心的结果……那么,在Python中,我们如何同时得出不及格学渣程序结束这三个结果的呢?

if嵌套的执行顺序

先从整体总览一下,这段成绩评价规则的代码,总共分为四部分【赋值ifelseprint()】,两个大代码组。

并且,在代码组1的if条件和代码组2的else的条件下,又包含了条件判断命令if...else...

那么,这种嵌套命令我们要如何理解呢?

缩进相同的命令处于同一个等级,第一步,计算机就要按顺序一条一条地执行命令。

那么,计算机执行的顺序就是:(1)先给historyscore赋值;

(2)因为if和else是只能留一个的互斥关系,if和else下的代码块只会执行一个,所以计算机要判断赋值的内容满足【historyscore>=60】还是【historyscore<60】的条件——如果满足if的条件,就执行if缩进下的内容,如果不满足就执行else缩进下的内容;

(3)执行print('程序结束')。

所以,我们的运行顺序是,先输出的结果不及格,然后再判断历史成绩26分的赋值符合历史成绩<60分且<30分还是历史成绩<60分且>=30分的条件。

如何写嵌套代码

if嵌套由于涉及多个条件判断,并且是条件套条件的判断,所以为了理清逻辑,我们可采用扒洋葱大法写if嵌套

用成绩举例,第一步就要搞定最外层那张皮,将最基础的命令和条件写出来。

那么,我们的思考逻辑应该是这样(1)把26分的历成绩赋给变量historyscore;(2)用if…else写最基础判断条件如果historyscore>=60时,打印你已经及格,否则,打印不及格;(3)用print()输出程序结束

在成绩为26分的赋值情况下,只套了一层“条件判断”皮的代码,会出现怎样的结果:

historyscore=26
#赋值语句:为历史成绩赋值if historyscore>=60:#条件:当历史成绩大于等于60时:print('你已经及格')else:#条件:当历史成绩小于60时print('不及格')#结果:输出不及格的结果print('程序结束')
#打印最终结果

不及格
程序结束

第二步,在“第一层皮”里装东西。也就是在条件【historyscore>=60】下,增加额外条件。

其中,额外条件1:当历史成绩大于等于80分,显示结果你很优秀;额外条件2:当历史成绩在60到80分之间,显示结果:你只是一般般

historyscore=26
#赋值语句:为历史成绩赋值if historyscore>=60:#条件:当历史成绩大于等于60时print('你已经及格')#结果:输入及格的结果if historyscore>=80:#条件:当历史成绩大于等于60,且历史成绩大于等于80print('你很优秀')#结果:输出你很优秀的结果else:#条件:当历史成绩大于等于60,且小于80时print('你只是一般般')#结果:输出你只是一般般的结果else:#条件:当历史成绩小于60时print('不及格')#结果:输出不及格的结果print('程序结束')
#打印最终结果

不及格
程序结束

最后一步,你要为另一个大条件else增加额外条件了!

historyscore=26if historyscore>=60:if historyscore>=80:print('你很优秀')else:print('你只是一般般')elif historyscore<60:if historyscore<30:print('学渣')else:print('还能抢救一下')print('程序结束')

学渣
程序结束

总结一下整节课的知识点:

小练习1

题目要求:

请你写出一段代码,在一颗宝石都没偷回来的赋值下,进行条件判断,并产生对应的结果:

1.如果偷回的宝石数是4颗及以上,输出结果获得了打败灭霸的力量,反杀稳了
2.如果偷回的宝石数是1-3颗,输出结果可以全员出动,殊死一搏
3.如果偷回的宝石数是0颗,输出结果没办法了,只能尝试呼叫惊奇队长

题目讲解:

1.赋值:因为他们一个宝石都没偷回来,为偷来的宝石stonenumber赋值为0。

2.用if写第一个条件:如果偷回的宝石数是4颗及以上,输出结果:获得了打败灭霸的力量,反杀稳了

3.用elif写第二个条件:如果偷回的宝石数是1-3颗,输出结果:可以全员出动,殊死一搏

4.用else写第三个条件:如果偷回的宝石数是0颗,输出结果:没办法了,只能尝试呼叫惊奇队长

书写代码:

stonenumber=0if stonenumber>=4:print('获得了打败灭霸的力量,反杀稳了')elif 0<stonenumber<4:print('可以全员出动,殊死一搏')else:print('没办法了,只能尝试呼叫惊奇队长')

没办法了,只能尝试呼叫惊奇队长

小练习2

题目要求:

复仇者联盟的成员也是有工资的,然而,由于美国队长一直被冰封在北极,错过了多次调薪机会,所以美国队长的工资一直是每月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.不管赋值改变后输出结果如何,都需固定打印结果“程序结束”

步骤讲解:

1.根据if条件嵌套分析,最基础的条件有三个:条件1工资小于等于500美元;条件2工资在500-1000美元之间(含1000美元);条件3工资大于1000美元。
2.基础条件1的额外条件有两个:1工资在100-500美元之间;2工资小于等于100美元
3.基础条件2无额外条件
4.基础条件3的额外条件有两个:1工资在1000-20000美元(含20000美元)之间;2工资大于20000美元
5.输出固定结果程序结束

书写代码:

import timesalary=80if salary<=500:print('欢迎进入史塔克穷人帮前三名')time.sleep(1)if 100<salary<=500:print('请找弗瑞队长加薪')if salary<=100:print('恭喜您荣获“美元队长”称号!')elif 500<salary<=1000:print('祝贺您至少可以温饱了。')else:print('经济危机都难不倒您!')time.sleep(1)if 1000<salary<=20000:print('您快比钢铁侠有钱了!')if salary>20000:print('您是不是来自于瓦坎达国?')time.sleep(1)
print('程序结束')

欢迎进入史塔克穷人帮前三名
恭喜您荣获“美元队长”称号!
程序结束

<From Zero to Hero>零基础学习Python基础语法【条件判断与条件嵌套】相关推荐

  1. python语言的单行注释以井号开头_推荐|零基础学习Python基础知识

    原标题:推荐|零基础学习Python基础知识 Python是一种面向对象.解释型计算机程序设计语言.语法简洁清晰,强制用空白符作为语句缩进. Python具有丰富和强大的库,又被称为胶水语言.能把其他 ...

  2. python编程入门免费_python编程入门 零基础学习Python基础(附带最新免费教程)...

    本篇是面向编程零基础学员的Python入门教程,内容涵盖了Python的基础知识和初步应用.以较轻快的风格,向零基础学习者介绍了一门时下比较流行的.并且用途比较广泛的编程语言.同时,其语法简洁而清晰, ...

  3. 自学python编程免费教程-python编程入门 零基础学习Python基础(附带最新免费教程)...

    本篇是面向编程零基础学员的Python入门教程,内容涵盖了Python的基础知识和初步应用.以较轻快的风格,向零基础学习者介绍了一门时下比较流行的.并且用途比较广泛的编程语言.同时,其语法简洁而清晰, ...

  4. python语法基础学习-Python基础语法精心总结!看完都知道的可以往下继续学习了...

    原标题:Python基础语法精心总结!看完都知道的可以往下继续学习了 这应该是最详细的Python入门基础语法总结! 定义变量,使用变量 1. input 用户自己输入值 2. print 打印值 可 ...

  5. 0基础学习Python基础语法(0)-print()与变量

    文章目录 Python[人工智能]时代的立身武器 print 无引号 单引号的用法 双引号的用法 三引号的用法 转义字符 变量和赋值 变量的命名规范 下关预告 Demo 例子:打印 例子:转义字符 要 ...

  6. 0基础学好python难不难_零基础学习Python难不难?Python有什么优势?

    原标题:零基础学习Python难不难?Python有什么优势? Python是一种计算机程序设计语言.首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个 ...

  7. 零基础学python多久可以工作-零基础学习python,要多久才可以学好并且找到工作?...

    原标题:零基础学习python,要多久才可以学好并且找到工作? 零基础的你想学习python肯定很关注学习python的最短时间是多久,怎样才能快速学习python等问题,今天就为大家详细地回答一下这 ...

  8. 零基础学python需要多久-零基础学习Python大概要多久,感悟分享?

    在互联网时代编程无处不在,它存在于我们生活和工作之中,可以说哪里有通讯,哪里有互联网就一定会有编程.由于Python软件比较简便,因而Python已经成为,编程人员乐于选择的一款软件,这款软件的语言比 ...

  9. 零基础学python需要多久-零基础学习Python开发需要多长时间?

    原标题:零基础学习Python开发需要多长时间? Python开发技术目前可谓是互联网行业编程界的新宠,不少零基础想要进入IT行业的人员都纷纷加入学习Python开发.零基础学习Python开发技术需 ...

最新文章

  1. maven中打包项目为war包的pom.xml配置
  2. spring boot2 整合(一)Mybatis (特别完整!)
  3. clusense VS2008版本
  4. php常量数组吗,包含数组的PHP常量?
  5. paragon+ntfs+linux,NTFS For Mac 超强兼容性
  6. 以房养老骗局高发,背后套路何在?
  7. html简单实现下拉菜单
  8. 【语音编辑】基于matlab语音编辑【含Matlab源码 539期】
  9. 迈高图手机版_迈高图地图下载
  10. matlab三维网格绘图函数mesh、meshc、mesh、zmeshgrid、surf【matlab图行绘制五】
  11. Stata: 正则表达式和文本分析
  12. Windows实现微信双(多)开—微信分身
  13. ESD防护选型思路(一)
  14. 【Leetcode】232.用栈实现队列
  15. Chapter17: Artificial Intelligenc-Enabled De Novo Design of Novel Compounds that Are Synthesizable
  16. PyQt5 QLabel标签
  17. 使用C语言编写三子棋小游戏
  18. iOS Core Bluetooth_4 用作中央设备的常用方法(2/2)[swift实现]
  19. 试用MarkDown标记法和Haroopad编辑器
  20. 数据结构 第一节 第一课

热门文章

  1. win获取正在使用的网卡信息
  2. VPS和云主机的选购指南
  3. 禁用vscode全局搜索时 replace Preview功能
  4. 【FFmpeg】学会添加水印,只要这一篇就足够
  5. luogu P2700 逐个击破
  6. 男生和女生(python)
  7. 【swing】JLabel详解以及使用示例
  8. 项目实现一键换肤的功能
  9. Android中类ListPreference使用介绍
  10. hon linux lol中文语音包,致lol转来的童鞋们:HON和英雄联盟的不同点