本章学习点:
- 算数运算符 + - * / ** % // (加,减,乘,除,求幂次方,求余,求商)
- 赋值运算符 = += -= *= /= **= %= //= (加赋值,减赋值,乘赋值,除赋值,求幂次方赋值,求余赋值,求商赋值)
- 比较运算符 == != <> > < >= <= (等于,不等于,不等于,大于,小于,大于等于,小于等于)
- 布尔值 True (真) 与 False(假)
- 逻辑运算符 and or not (且,或,取非)
- 成员运算符 in 与 not in (包含与不包含)
一.算数运算符
算数运算符之前已经说明过了,详细请看 Python条件语句与基本数据类 的数字部分。
二.赋值运算符
赋值运算符,其实很好理解,平常我们看到 number = 1 这个语句,其实就是一个简单的赋值语句不带任何算数运算的赋值语句。那要是有算数运算的赋值语句呢,该是如何的呢?若规定,需要让number加一,那么我们会按照初的语句number = number + 1 这样写,那么如果说总算是这样写,会不会比较麻烦呢?有不有个快捷的方法能提高编码效率呢?答案肯定是有的,我们可以使用number += 1 即可实现。 number += 1 的意思是说,将number加一后,就直接赋值给number,其实道理是运算一样的道理。只是说把加号与赋值号相结合了而已。那么既然有+=,肯定会有-=等等。那么其他的我们以以下代码展示出来。
#!/usr/bin/env python
# -*- coding:utf8 -*-
number = 1
number += 1
number -= 1
number *= 1
number /= 1
number %= 1
number **= 1 #求幂
number //= 1 #求商取整
三.比较运算符
比较运算符就更好理解了,比较嘛,顾名思义,就是比较大与小以及是否相等的问题呗。那到底是如何的呢?定义number1=1,number2 = 2,那判断两者是否相等就使用==符号,flag = number1 == number2 。为了看的更清楚,咋们看看以下代码就知道了。
# !/usr/bin/env python
# -*- coding:utf8 -*-
number1 = 1
number2 = 2
flag = number1 == number2
flag = number1 > number2
flag = number1 < number2
flag = number1 >= number2
flag = number1 <= number2
flag = number1 != number2
flag = number1 <> number2
特别要注意的是:
!= 是指不等于,<> 也是指不等于,两者可替换,!=在代码中使用的比较普遍,<>在数据库中普遍。建议使用 != 。
四.布尔值 True (真) 与 False(假)
对于布尔值来说,只有两个值,要么是真,要么就是假。也就是说对于妈妈问小孩子事情,小孩子说的话要么是真话,要么是假话。其实布尔值已经在比较运算符里面就体现了,在判断两个数的大小时,就已经是一个布尔值的体现了,判断后返回的就是布尔值。还有就是在 while 和 if 判断的时候,条件返回回来的也就是布尔值。那布尔值的值是什么呢,真就是True,假就是False,注意首字母大写。
五.逻辑运算符and or not (且,或,取非)
对于逻辑运算符,其实还是布尔值的一种,只是说它换了马甲进行去展示而已,本质上还是布尔值。
先解释下and,or,not是什么先。来来,看这里。
and是且的意思,举个栗子,对一个女孩子的眼睛进行称赞的时候,就说呀,你的眼睛又大又漂亮,那么这个就是且的意思了,翻译过来就是你的眼睛不仅大而且漂亮;如果说眼睛大不成立,那么这句话也就是一句假话。意思就是说对于and来说,有一个条件不成立,就整句话就是假了。有假则假。
or的意思呢?就是或者的意思,再举个栗子,去买水果付款的时候,老板说你可以使用手机支付,也可以使用纸币支付。那么这句话翻译过来就是 可以使用手机支付,或者纸币支付。那么假如说你使用手机支付,那么这个行为就是成立的了,就是真的了。意思就是说对于or来说,只要有一个条件为真的,那么整体的行为就是真的了。有真则真。
not呢?再举个栗子,当去购物店买衣服的时候,售货员拿了个衣服说这件事衣服就是你刚刚试穿的意思,但是实际上不是的,所以你说出了这个不是我刚刚试穿的衣服,就否定了售货员所说的。那么not就是否定的意思,取反,假的经过not后变成了真的,真的经过not后变成了假的。
弄清楚这三者是什么意思,那么接下来咋们看一段代码。
# !/usr/bin/env python
# -*- coding:utf8 -*-
name = "Jeff"
age = 20
result = name == "Jeff" or age == 21 and 1 == 2
print(result)
result = name == "Jeff" and age == 21 or 1 == 1 and age == 21
print(result)
那么结果是:
True
False
为什么第一个result是为True呢?其实这里藏着一个知识点。我们之前就说过了,一旦and的一个条件为假的时候,那么整体就是为假了,or的一个条件为真的时候,那么整体就是真的。
那么按照我们上面所说的,先看第一句代码。result = name == "Jeff" or age == 21 and 1 == 2 。咋们来仔细分析下,程序是如何走的。首先,name=="Jeff"确实是真的,那么再往后面看是一个or关键字,那么按照上面所说的,只要or有一个是真的,整体就是真的了,那么name=="Jeff"确实是真的成立,那么就不会往下执行了,直接就返回了True了。
再来看看第二句代码。result = name == "Jeff" and age == 21 or 1 == 1 and age == 21 。 name=="Jeff" 是真的,后面有and关键字,这时候我们说and是碰到假的才会进行整体,那么前面的条件是真的,所以还是得往下执行,看age==21这个是假的,那么通过and,发现得出的结果是假的,那么and一旦有一个假,那么整体就是假的了,所以后面就不往下执行了,直接返回了False了。
注明:如果有括号,先计算括号里面的,再计算其他的。
那么我们归纳下:
执行顺序:
若有括号,先执行括号里面的。
若没有括号,从前往后执行 结果
True Or ==> True
True And ==> 继续执行
False Or ==> 继续执行
False And ==> False
六.成员运算符 in 与 not in (包含与不包含)
对于成员运算符来说,实际上还是布尔值。下面来说说in 和 not in的意思
in 就是包含的意思,举个栗子,有一个字符串s = "abc" ,那么想判断ab这个单词、a这个单词、ac这个单词是否在这个字符串里面,那么该如何判断呢?那么就是
# !/usr/bin/env python
# -*- coding:utf8 -*-
s = "abc"
result = "ab" in s
print(result)
result = "a" in s
print(result)
result = "ac" in s
print(result)
输出的结果是
True
True
False
也就是说判断是否在里面可以使用in,那么与此类似,not in也是一样的道理,判断是否不在里面可以使用not in
本章结束,谢谢。