联想说 Python 基础 08 - 比较和逻辑运算符

比较和逻辑运算符

目标:掌握几种运算符的写法以及含义。

看标题,没错哈,咱们又回到了运算符来了。不过这里是一些新的运算符,通过这些运算符得到的一般都是布尔类型。

比较运算符

Python 中的比较符与数学中的常用比较符差不多,不过有一些符号的表现形式不一样,来看看:

运算符描述 python中的比较运算符 数学中的比较运算符
是否相等 == =
是否不等 !=
大于 > >
大于等于 >=
小于 < <
小于等于 <=

它们在含以上没有什么不同,所以这个就不多说了(除非你把数学给忘完了,那你就来找我吧)。

前面说了,它们比较的结果是布尔值,也就是真假。所以它们可以用在 if 后面,就像这样:

age = 16

if age == 18:
    print("成年了,进去吧")
else:
    print("未成年,别想从这里进去(走后门)")

这里把变量 age 的值与 if 后面的条件进行判断,判断它是否成年,从而根据年龄来决定怎么去做。

因为变量是可以改变的,所以这里既可能执行上面的分支,也可能执行下面的分支。

其他的几个运算符还要说吗?应该不用了哈!

强调:Python 中判断是否相等使用的是 ==,而不是 =,所以含义虽然相同,但是不要把符号也混用。

逻辑运算符

比较运算符已经可以让代码有比较大的改变了,不过一个条件就满足你了,这也太容易了吧(太容易得到的不容易珍惜,所以你们肯定不会珍惜我的这些文章的)。

为了给出不同的难度,可以使用逻辑运算符提出多个条件用来判断是否去做某件事。

先看看逻辑运算符有哪些:

运算符描述 python中的逻辑运算符
并且 and
或者 or
not

怎么用呢?

都说了它是用来提出多个条件的,所以咱们先来多个条件 age > 16 和 age < 20

这里存在两个条件,一个是年两大于 16,另一个是年龄小于 20,如果能像上面用 把两个条件连接起来就好了。试试?

age > 16 and age < 20

好像,没有出错。

其实 and 和 or 就是这样用的,它们放在多个条件中间连接。

and 表示并且,也就是说多个条件都要成立(就是汉语的并且,不用想太多)。

or 表示或者,也就是说多个条件你随便成立一个都行。

试一试 - 把这段内容和 if 结合:

age = 16

if age > 16 and age < 20:
    print("成年了,进去吧")
else:
    print("未成年,别想从这里进去(走后门)")  # 走这个

or 咱就不在继续说了,下面说说 not。

not

not 也翻译一下,叫

啥是不?那就是你说啥它都说不,比如你说对,它就说不对。你说不对,它就不不对(负负得正,那就对了)。所以 not 就是跟你唱反调,你得到什么结果再加上它就变成了相反的结果。

试一试 - 比较运算符再加 not:

age = 15

if not age > 16:
    print("成年了,进去吧")  # 走这个
else:
    print("未成年,别想从这里进去(走后门)")

“15 > 16” 明明是错误的,也就是 False,但是加上了 not,结果就成了 True,所以它走了上面的程序。

逻辑运算符的逻辑在哪?

逻辑运算符为什么叫逻辑运算符?就因为它能用在多个条件表达式?

不单单如此,逻辑还体现在另一处,那就是根据其中一个条件表达式是否成立从而判断另一个是否执行。

简单点说,就是并不是一个 if 中的所有条件表达式都会执行。比如:

if 6 > 7 and 6 > 2:
    print("成年了,进去吧")

这段代码中,后面的判断是不会执行的。

为什么呢?

因为 and 是并且的意思,也就是说要两个条件都成立才会执行下面的程序,现在都已经有一个不成立了,那还有必要看下一个是不是成立?那肯定不用了嘛。

验证:

if 9 > 7 and 6 / 0 > 2:
    print("成年了,进去吧")

因为第一个成立了,所以应该要执行第二个。但是第二个条件是 6/0,它会报错,所以结果就报错了。

如果把第一个条件改成不成立:

if 6 > 7 and 6 / 0 > 2:
    print("成年了,进去吧")

啥都不会执行,这说明第二个条件根本就没有执行到。or 类似,就不再多说了。

几种运算符优先级

从前面的验证代码中,我们看到这样一串代码:

6 > 7 and 6 / 0 > 2

这里就包含了算术运算符,比较运算符和逻辑运算符。

从逻辑和结果我们大致可以猜测逻辑运算符是优先级最小的,因为不管两边的表达式怎么写,它都只看表达式的结果,而逻辑运算符并不会影响单个表达式的结果。

再看算术运算符和比较运算符。

当右边表达式能被执行时,会提示报错:ZeroDivisionError: division by zero,表示 除以零错误,所以这里应该是先执行了算术运算符,后执行比较运算符。

总结:运算符优先级是 算术运算符 > 比较运算符 > 逻辑运算符

tips:这部分可以不看哈,了解一下

  • 6/True 的结果是 6.0
  • 6/False 的结果是 ZeroDivisionError: division by zero

所以前面可以改成 6 / 0 < 2 测试,这就不会出现干扰了,不过结果一样。

为什么不直接改成这样?改成这样怎么出来这段内容呢 (¬‿¬)

posted @ 2023-10-05 19:22  笔锋微凉~~  阅读(52)  评论(0)    收藏  举报