Python入门 | 如果更复杂……

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

请访问: 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:1
y: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 作用如下图所示:

24b81c83262ecc974bcc6fdd8ddb73d3.png

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

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

elif 的作用如下图所示:

2d8a9b346aba1bcbd114e8374f1b26c1.png

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:
        代码AA
elif 条件2:
    代码B
elif 条件3:
    代码C
else:
    代码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 条件 else 值2

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

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

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

你看懂了吗?a3469c35aaafa092610df8fe197c6807.png

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


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


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

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

dc7941423797905241257222ffe92c67.jpeg

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

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

感谢转发点赞的各位~


_往期文章推荐_

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


如需了解付费精品课程教学答疑服务

请在Crossin的编程教室内回复: 666

cdef89022dc353d2791f7f972f14981b.jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Crossin的编程教室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值