ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

0编程基础学python之if条件语句

2021-05-14 18:00:34  阅读:173  来源: 互联网

标签:语句 elif python 编程 缩进 else 命令 条件 print


 

 

0编程基础学python之if条件语句

声明:大家在学习过程中如果有遇到不懂的知识点,可以私聊,柯看到必回。也可以找我拿练习巩固!

上篇内容是对三种数据类型和数据类型操作的讲解。攻克了如何与Python沟通的语言大关——通过三种数据类型(字符串、整数和浮点数)的相互转换,突破语言差异的墙。

但是光掌握正确的沟通语言还不够,还需要正确的沟通逻辑,才能让Python准确地执行你的命令。

什么逻辑?就是明确地让计算机知道:在什么条件下,该去做什么。上图:

条件判断

Python之所以能做很多自动化任务,比如自动抓取网页关键词,自动下载小电影等,就是因为它可以执行条件判断。它通过识别你的条件,产生对应的结果。

有几种判断形式呢?

三种:

单项判断:if

这是if语句的结构,下面我上个代码,大家可以在编译器种实现一下。

i = 5
if i < 10:
    print("你今天真好看!")

这段代码的意思呢就是我把一个变量i赋予一个初始的值5,然后建成一个条件,如果i<10,就输出“你今天真好看”。

那如果是条件不变呢,我把i赋值成11

i = 11
if i < 10:
    print("你今天真好看!")

就啥都输出不了。

也就是“你今天真好看”要显示在终端上,前提条件是i<10必须满足。

讲完要点,来扯一下细节。

①在条件判断代码中的冒号(:)后、下一行内容的前面,会空几个格,但这是为什么呢?

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

对于Python而言,冒号和缩进是一种语法。它会帮助Python区分代码之间的层次,理解条件执行的逻辑及先后顺序。

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

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

这意味着:如果赋值满足if条件,计算机就会准确执行if条件内部的命令。

通俗点讲,我们可以把if当作一个黑社会大哥,冒号后的内容都是他的小弟,当老大if提出一个条件时,他组织下的小弟就会自动执行任务。

你们可以尝试一下把刚才的代码中print()函数前的缩进去掉

是不是会出现IndentationError: expected an indented block(缩进错误:期望一个缩进块)的报错?

这是因为,当我们去掉缩进时,if条件和print命令成为了两个不同的代码组,属于平行关系。你看,print小弟都自立为王了,他自然就不会执行if老大的命令了。

总结一下刚才代码的逻辑:

双向判断:if…else…

解释一下哈:

我们学习的if条件语句是如果…就…的单向逻辑,如果满足条件,就执行结果。

 

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

 

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

注意:else虽然属于这个if,但是是不需要缩进的,因为else是if的好兄弟,if不要的东西,else都会要的。他们是并列的同级关系。

在平级关系的前提下,他们表示的意思是条件和其他条件的互斥关系——如果不满足if条件,就执行else其他条件。

学过集合的朋友们我还可以用集合来讲一下。就是有个条件集U,if后面接的条件是集合里面的子集A,else表示的就是集合A的补集。

跑一下代码吧

i = 11
if i < 10:
    print("你今天真好看!")
else:
    print("你今天真开心!")

你看,他不满足i<10的条件,所以执行了else中的语句,在终端打印出了“你今天真开心!”

再看下面这种情况:

i = 11
if i < 10:
    print("你今天真好看!")
    if i > 5:
        print("你明天更好看!")
    else:
        print("你今天真开心!")

此时又什么都运行不出来了,为什么呢?

因为这个else在if i<10 的里面,前面有缩进代表它和if i<10的这个if不是同级,不能运行出除了i<10以外的所有情况。

那我们要运行出你今天真开心,要给i的赋值范围在哪里呢?

对,没错,是在i<=5的时候。

首先要能够执行第一层if就满足i<10这个条件,然后i<10且i>5的条件下,会运行第二个if中的内容,所以要运行出“你今天真开心”,就必须满足i<10且不满足i>5。

i = 4
if i < 10:
    print("你今天真好看!")
    if i > 5:
        print("你明天更好看!")
    else:
        print("你今天真开心!")

对吧!哦,解释一下,“你今天真好看!”是满足i<10就会打印出来的。

接下来做一个总结:

else对应的是最近的一个同级的if

我们归纳一下if...else正确运行的语句逻辑:(1)if和else两个条件判断是平级关系;(2)当if条件不被满足时,才会执行else下的命令。

 

看到没,想让else正确运行有两个关键点——平级和if前提条件:当else有一个和它平级的if前提条件,且这个前提条件无法执行时,才会轮到else发挥作用。

提前预告:

 

现在,问题又来了:else一定要和if组团,才能运行吗?

 

并不是,虽然想要让else生效,一定需要一个平级的前提条件,但这个前提条件却不一定是条件判断语句,还可以是后面你会学到的其他命令语句。

 

可这个和else平级的命令有个限制条件:它不能是一个“一步到胃”的命令——像print()一样直接得出结果的命令,它得是一个需要再处理的命令。

 

什么叫再处理呢?白话点讲就是:我得先把食物嚼碎了,咽下去才能进到胃里。回归到计算机语言,就是要让计算机先做个判断(如先运行if条件),看是否通过,如果不通过,再运行else。

 

举一些具体的例子:像我们未来会学到的,让你痛并快乐着的while循环、for循环,这些都是需要再处理的命令,所以他们也可以作为else的平级命令。

多向判断:if…elif…else…

话不多说,先上图:

这又是什么鬼?

通俗来说呢

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

 

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

来跑一下代码吧

i = 4
if  5 < i < 10:
    print("你今天真好看!")
elif 5 > i > 3:
        print("你明天更好看!")
else:
        print("你今天真开心!")

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

 

其次,elif的运行本质上和else一样,都需要一个和elif平级的前提,但是这个前提只能是if。

 

最后,elif已经带有其他条件的意思,所以elif后也可以不接else。

上面的代码,大前提i = 4会对if 和所有的elif进行扫描,先扫描有没有在5~10里面,如果没有,就继续判断elif,看看有没有在3~5里面,欸发现有了,就输出了elif对应的内容。

用集合来解释一下:if是条件集U中的子集A,elif是子集B(可能还有很多个elif是子集C,D,E等等),那么我们最后的else就是A∪B∪C...并集的补集。

好啦,今天的if语句就讲到这里啦,柯要去给学生上课了,有任何问题,或者文章中有错误的地方,及时提醒柯!!欢迎并感恩各位大佬的提点!

 

 

 

 

 

 

 

标签:语句,elif,python,编程,缩进,else,命令,条件,print
来源: https://blog.csdn.net/weixin_43940689/article/details/116792305

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有