联想说 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 测试,这就不会出现干扰了,不过结果一样。
为什么不直接改成这样?改成这样怎么出来这段内容呢 (¬‿¬)

浙公网安备 33010602011771号