社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

Python入门 | 如果更复杂……

Crossin的编程教室 • 7 月前 • 92 次点击  

入门教程、案例源码、学习资料、读者群

请访问: python666.cn


大家好,欢迎来到 Crossin的编程教室 !

之前我们了解了如何用在 Python 中使用 if 语句,来根据不同的条件执行相应的代码。(《Python入门 | 假如……》

下面我们看一个问题:

【输入】一对 x、y 坐标值

【输出】坐标所属的象限


这个问题用 if 语句就可以解决,可以写 4 个 if 条件判断:

x = float(input('x:'))y = float(input('y:'))
if x > 0 and y > 0: print('第1象限')if x < 0 and y > 0: print('第2象限')if x < 0 and y < 0: print('第3象限')if x > 0 and y < 0: print('第4象限')

如果考虑上点在坐标轴上的情况,就再加上一个 if:

if x == 0 or y == 0:    print('不属于任何象限')

运行效果:

x:1y:1第1象限

不过这里有更好的写法,用 elif 和 else 替代后面的4个 if:

if x > 0 and y > 0:    print('第1象限')elif y > 0:    print('第2象限')elif x < 0:    print('第3象限')elif x > 0:    print('第4象限')else:    print('不属于任何象限')

elif 和 else 都是 if 语句的可选分支。

else 作用如下图所示:

if 的意思是「如果」,如果满足「条件1」,就往下执行「代码A」,不满足就不做,直接跳到后续代码;

else 的意思是「否则」,和 if 搭配起来,就是当「条件1」不满足时,不是直接跳过,而是去执行「代码B」,然后再回到后续代码。

elif 的作用如下图所示:

elif 的意思就是 else + if,在 else 的基础上增加了一次条件判断:

当「条件1」不满足时,会再判断「条件2」,和 if 一样,如果满足就执行其中的「代码B」,不满足就跳过。

if、elif、else 可以组合起来用,实现任意多种条件的判断。

要注意的是:第一条 if 必须要有,后面可以接任意多个 elif(也可以不加),最后可以加一个 else(也可以不加),表示所有没有覆盖到的情况。

上例中,用 elif 和 else 并不能减少判断条件的分支数,但是能简化条件、保证全覆盖,避免出现遗漏或重复判断的 bug。

另外,原来多个 if 的写法,每个条件判断是分别独立的,所以不管是什么值,都会判断多次;

而修改后的条件判断是一个整体,一旦发现符合条件的分支,就不需要再往下判断了。所以理论上执行效率更高。

不过,其实还有更好的写法。

if 语句可以嵌套使用,例如一个 if「条件1」的内部「代码块A」中,可以继续增加 if「条件1.1」,「条件1.1」只会在外部的「条件1」满足时才会执行。内层 if 的规则是一样的,满足「条件1.1」就执行再下一层的「代码块AA」。

if 条件1:    代码A    if 条件1.1:        代码AAelif 条件2:    代码Belif 条件3:    代码Celse:    代码D

要注意,每一层代码块都要比上一层代码多增加一次缩进。

if x > 0:    if y > 0:        print('第1象限')    else:        print('第4象限')else:    if y > 0:        print('第2象限')    else:        print('第3象限')

这里用 2 层循环分别判断 x 和 y 的大小。

可以再加一层 if,判断点在坐标轴上的情况:

if x == 0 or y == 0:    print('不属于任何象限')else:        if x > 0:        if y > 0:            print('第1象限')        else:            print('第4象限')    else:        if y > 0:            print('第2象限')        else:            print('第3象限')

最后,再分享一种奇葩的写法。

Python 里有种单行 if-else 的写法:

1 if 条件 else2

如果「条件」满足,结果就是「值1」,否则就是「值2」。

并且这个语句也是可以嵌套的。所以上述问题就可以写成(右滑查看全部)

print((('第1象限' if y > 0 else '第4象限') if x > 0 else ('第2象限' if y > 0 else '第3象限')) if x*y else '不属于任何象限')

你看懂了吗?

对于 Python 中的条件判断语句,你还有什么想了解的内容?欢迎在留言区讨论。


以下是视频时间,欢迎大家关注、点赞、转发:



Crossin的第2本书《码上行动:利用Python与ChatGPT高效搞定Excel数据分析》已经上市了

点此查看上一本《码上行动:零基础学会Python编程》介绍

本书从 Python 和 Excel 结合使用的角度讲解处理分析数据的思路、方法与实战应用。不论是希望从事数据分析岗位的学习者,还是其他职业的办公人员,都可以通过本书的学习掌握 Python 分析数据的技能。书中创新性地将 ChatGPT 引入到教学当中,用 ChatGPT 答疑并提供实训代码,并介绍了使用 ChatGPT 辅助学习的一些实用技巧,给学习者带来全新的学习方式。


公众号的读者朋友们购买后可在后台联系我,加入读者交流群,Crossin会为你开启陪读模式,解答你在阅读本书时的一切疑问。


感谢转发点赞的各位~

_往期文章推荐_

Python入门|逻辑运算的那些坑




如需了解付费精品课程教学答疑服务
请在Crossin的编程教室内回复: 666

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/162175
 
92 次点击