Python流程控制上:if分支语句和逻辑运算

不积跬步无以至千里,秋华学习笔记分享,如不当之处恳请斧正,感激不尽。

目录

分支语句

单一判断:if语句

两种情况:if-else语句

多种情况:if-elif-else语句

if嵌套

逻辑运算

与逻辑:and

或逻辑:or

非逻辑:not

运行顺序:not-and-or

逻辑短路

and逻辑短路

 or逻辑短路


分支语句

之前学习到python程序的运行默认是从上往下,从左往右。但需求往往是不断变化的,生活中的可能性是多样的。比如去超市买泡芙,秋华喜欢吃草莓味泡芙就会选择买草莓味泡芙,可有些小伙伴喜欢吃巧克力味,又可能另一些小伙伴喜欢吃原味的泡芙。这种情况就不在是单一的从上往下的执行流程,其中出现了多种可能的分支,在python中用什么表达这种情况呢?

单一判断:if语句

if语句又称之为判断语句,可以控制程序的执行流程,达到上述分支的目的。一步一个脚印,先学习单一判断,顾名思义,只对一种情况进行判断。

"""
0 原味泡芙
1 草莓味泡芙
2 巧克力泡芙
"""
a = 0
if a == 1:
    print("购买草莓味泡芙")

在上述代码中分别用3个数值代替3种口味泡芙,定义变量a用来表示超市中有那种口味泡芙。使用if语句进行判断,如果超市有草莓味的泡芙就购买。很明显此时超市里面没有草莓味的泡芙所以程序运行后不会输出任何数据,我们来看一下if语句的语法规则。

"""
0 原味泡芙
1 草莓味泡芙
2 巧克力泡芙

单一判断:if


if 判断条件:
    满足判断时要做的事情
"""
a = 0
if a == 1:
    print("购买草莓味泡芙")

首先if是关键字空格之后编写判断条件跟上冒号然后下一行缩进之后开始编写满足条件时要运行的代码。

缩进:python中使用缩进划分语句块。秋华把缩进简单理解成上下级关系,只有领导给咱们权限,咱们才可以对应执行某些事情。

判断条件最终返回的都是布尔值,也就是为真True,为假False,只有当判断条件为真时才会运行缩进里面的代码,为假则不运行缩进里面的代码。

两种情况:if-else语句

把if理解成如果,else就是否则的意思。例如没有草莓味泡芙而实在嘴馋的时候就购买其他喜欢吃的零食。

"""
0 原味泡芙
1 草莓味泡芙
2 巧克力泡芙

单一判断:if
两种情况:if-else  # else不能单独存在


if 判断条件:
    满足判断时要做的事情
else:
    不满足判断条件时要做的事情
"""
a = 0
if a == 1:
    print("购买草莓味泡芙")
else:
    print("购买其它喜欢的零食")

运行上述代码会执行else缩进里面的代码。看到else语法规则,else是关键字后面直接冒号然后下一行缩进编写需要执行的代码,在if判断条件为假的情况下执行else缩进里面的代码。需要注意的是else不能单独出现,它需要和其它关键字一起使用。

多种情况:if-elif-else语句

有的小伙伴喜欢巧克力味的,有的喜欢原味的又该如何表示呢?

"""
0 原味泡芙
1 草莓味泡芙
2 巧克力泡芙

单一判断:if
两种情况:if-else  # else不能单独出现
多种情况:if-elif-else  # elif只能和if联合使用
         if-elif-...-elif-else


if 判断条件1:
    满足判断条件1时要做的事情
elif 判断条件2:
    满足判断条件2时要做的事情
else:
    不满足所有判断条件时要做的事情
"""
a = 0
if a == 1:
    print("购买草莓味泡芙")
elif a == 0:
    print("购买原味泡芙")
else:
    print("购买其他喜欢的零食")

运行上述代码,会运行elif缩进里面的语句。elif是关键字空格之后跟上判断条件加冒号然后下一行缩进之后写需要运行的代码。

为了和if判断条件区分,这里用判断条件2表示,也是返回的布尔值。代码从上往下运行,当上面的if判断条件为假时才会运行elif的判断条件2,当判断条件2为真时才会运行对应elif缩进里面的代码。而else是最后所有判断条件都为假时运行。

如果还有其他可能,继续加elif就行了。

需要注意的是elif只能和if联合使用,简单一点理解不使用if就不能使用elif,和else是有差别的,else还可以和其他关键字联合使用,比如后续会学习到的流程控制里while循环和for循环。

if嵌套

if的嵌套指的是if语句的缩进里面还有if。适用于逐层判断,比如咱们坐火车,高铁,飞机等交通工具的时候,会先检查是否购票,然后进站前会检查是否随身携带了违禁物品,如果都通过最终就可以进站了。

a = 1  # a代表是否购票 1为购票,0为没有购票
b = 1  # b代表是否携带违禁物品 1为没有携带,0为携带
if a == 1:
    if b == 1:
        print("已检查完毕,请进站。")
    else:
        print("检查到您携带违禁品,暂时不能进站,请配合深入检查!")
else:
    print("您还没有购票哦,请先购票。")

上述代码最终运行输出“已检查完毕,请进站。”,是一层一层判断进去的,刚开始秋华不太会看缩进,这里分享一个看缩进的小方法,划框框

对照缩进一层包裹一层划框,只有当判断为真的情况下才会运行下一层框里面的代码,这样就轻松不少。

逻辑运算

上述判断条件其实都是单一判断,比如判断是否有草莓味泡芙时可不可以同时判断价格呢,有的小伙伴发表了疑问,刚刚的if嵌套可以,但是它是逐一单个判断,可以同时完成判断吗?当然可以,这就需要用到逻辑运算的知识点了。

在学习逻辑运算符之前先来看看常用的比较运算符

比较运算符
运算符描述实例
==判断左右两边是否相等a=1,b=1,则a==b为真(True)
!=判断左右两边是否不相等a=1,b=1,则a!=b为假(False)
>判断左边是否大于右边a=1,b=2,则a>b为假(False)
>=判断左边是否大于等于右边a=1,b=2,则a>=b为假(False)
<判断左边是否小于右边a=1,b=2,则a<b为真(True)
<=判断左边是否小于等于右边a=1,b=2,则a<=b为真(True)

与逻辑:and

and:两者为真且为真

a = 5
if a < 9 and a > 1:
    print("ok")
else:
    print("no")

在上述代码中使用关键字and进行“与”逻辑运算,只有当and左右两边同时为真时,整体为真,5小于9为真,5大于1也为真,显然上述代码最终运行结果是输出“ok”。

或逻辑:or

or:两者其一为真且为真

a = 10
if a < 9 or a > 1:
    print("ok")
else:
    print("no")

在上述代码中使用关键字or进行“或”逻辑运算,当or左右两边其中一边为真时,整体为真,10小于9为假,但是10大于1为真,所以上述代码最终运行结果也是输出“ok”。

非逻辑:not

not:取反

if not True:
    print("ok")
else:
    print("no")

在上述代码中使用关键字not进行“非”逻辑运算。not是取反的意思,真的变为假,假的变为真。原本True为真,但是加上前面的not就整体取反为假,最终输出“no”

运行顺序:not-and-or

同时存在多个逻辑运算时判断顺序是怎样的呢?

print(not 1==1 and 1>2 or 2==2 and 2<1)

 上述代码运行结果最终为假False,先看not再看and最后看or

逻辑短路

在逻辑运算中因为and和or的特性,所以会存在逻辑短路的情况。

and逻辑短路

同样是b没有定义,但是为什么一个出现了异常(报错),一个正常运行呢?

同代码程序默认从左往右执行,如果中途能提前返回最终的结果,程序不在继续往右运行。and是左右两边同时为真最终才为真,当程序执行1大于3为假时就已经得出了最终为假的结论因为无论and右边为真为假最终是为假,导致程序“偷懒”并没有执行b<1,程序也就没有发现异常。

 or逻辑短路

和and逻辑短路类似,or是左右两边其一为真最终为真,所以当程序执行1大于0为真的情况下,无论or右边为真还是为假最终是为真,也导致程序“偷懒”并没有执行b<1,程序也就没有发现异常。

连着学习了几天,对代码越来越有感觉了。拒绝“云学习”(光看不练)。

纸上得来终觉浅,绝知此事要躬行。加油!少年郎。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值