04 - 运算符
目录
1. 运算符
1.1 概念
1.2 分类
1.2.1 算术运算符
1.2.2 赋值运算符
1.2.3 比较运算符(关系运算符)
1.2.4 逻辑运算符
1.2.5 条件运算符(三元运算符)
1. 运算符
1.1 概念
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如: 2 + 3,其操作数是2和3,而运算符则是“+”
1.2 分类
1.2.1 算术运算符
-
加法运算符 表现形式 +
-
减法运算符 表现形式 -
字符串不能相减 -
乘法运算符 表现形式 *
``` 1.x='a'*2 2.print('x= '+x) --->x=aa ```
如果将字符串和数字相乘,则会对字符串进行复制操作,或者将字符串重复指定次数;两个字符串不能相乘
-
除法运算符 表现形式 /
x=6/2 print('x= ',x) --->x=3.0
除法运算总能返回一个浮点类型(两个整数型数值);两个字符串不能进行相除
-
// 整除,只会保留计算后的整数位,总会返回⼀个整型
x=7//3 print('x= ',x) --->x=2
-
% 取模,求两个数相除的余数
x=6%4 print('x= ',x) --->x=2
-
** 幂运算,求⼀个值的⼏次幂
x=2**3 print('x= ',x) --->x=8
-
** 开平方
x=25**0.5 print('x= ',x) --->x=5
1.2.2 赋值运算符
- += (x+= 3 相当于 x = x + 3 )
x=2 x+=3 print('x= ',x) --->x=5
- -= (x -= 3 相当于 x= x - 3 )
x=2 x-=3 print('x= ',x) --->x=-1
- *= (x = 3 相当于 x = x 3 )
x=2 x*=3 print('x= ',x) --->x=6
- **= (x **= 3 相当于 x = x ** 3 )
x=2 x**=3 print('x= ',x) --->x=8
- /= (x /= 3 相当于 x = x/ 3 )
x=2 x/=3 print('x= ',x) --->x=0.6666666666666666
- //= (x //= 3 相当于 x = x // 3 )
x=2 x//=3 print('x= ',x) --->x=0
- %= (x %= 3 相当于 x= x % 3 )
x=2 x%=3 print('x= ',x) --->x=2
1.2.3 比较运算符(关系运算符)
a.比较运算符用来比较两个值之间的关系,总会返回⼀个布尔值.如果关系成立,返回True,否则返回False
b.比较左侧值是否大于右侧值
c.大于号(>)比较左侧值是否大于右侧值
d.大于等于号(>=)比较左侧的值是否大于或等于右侧的值
e.小于号(<)比较左侧值是否小于右侧值
f.小于等于号(<=)比较左侧的值是否小于或等于右侧的值
1.result=10>20
2.print('result=',result) --->result=False
1.result=30>20
2.print('result=',result) --->result=True
1.result=30<20
2.print('result=',result) --->result=False
1.result=10<20
2.print('result=',result) --->result=True
1.result=10<=10
2.print('result=',result) --->result=True
对位比较
1.result='2'>'1'
2.print('result=',result) --->result=True
1.result='2'>'11'
2.print('result=',result) --->result=True
1.result='a'>'b'
2.print('result=',result) --->result=False
1.result='c'<'d'
2.print('result=',result) --->result=True
1.result='ab'>'b'
2.print('result=',result) --->result=False
#如果出现了多个字符,那我们的比较方式是对位比较 a和b比较,如果没有比较出来,则看第二个
1.result='ab'>'aa'
2.print('result=',result) --->True
ord('a'),ord('b'),ord('c'),ord('d') --->(97, 98, 99, 100)
g.特殊的比较方式
-
== 比较两个对象的值是否相等,比较的是对象的value
!= 比较两个对象的值是否不相等,比较的是对象的value1.result=3==3 2.print('result=',result) --->True
1.result='hello'=='hello' 2.print('result=',result) --->False
1.result='abc'=='bcd' 2.print('result=',result) --->True
1.result=1==True 2.print('result=',result) --->True
-
is 比较两个对象是否是同⼀个对象,比较的是对象的id
is not 比较两个对象是否不是同⼀个对象,比较的是对象的id1.result = 0 == False 2.print('result=',result) --->True
1.result=0 is False 2.print('result=',result) --->False
1.result=0 is not False 2.print('result=',result) --->True
-
补充
1.a = 1 2.b = 1 3.result=0 is not False 4.print('result=',result) --->result = True 5.print(a is b) --->True 6.print(id(a),id(b)) --->1787588046 1787588046
原因:a和b同时指向一个对象
1.2.4 逻辑运算符
-
a. not 逻辑非
not可以对符号右侧的值进行非运算;对于布尔值,非运算会对其进行取反操作,True变False,False变Truea=1 a=not a print(a) --->False
r=None r=not r print('r=',r) --->r=True
a='hello' a=not a print(a) --->False
结论:0 空串 None 还有一些比如表示空性的值会转换为False
-
b. and 逻辑与
1.and 可以对符号两侧的值进行与运算。 只有在符号两侧的值都为True时,才会返回True
2.只要有⼀个False就返回False;与运算是找False的,如果第⼀个值为False,则不再看第⼆个值result=True and True print('result:',result) --->result:True
result=True and False print('result:',result) --->result:False
result=False and True print('result:',result) --->result:False
result=False and False print('result:',result) --->result:False
总结:有False则False
-
c. or 逻辑或
1.或运算两个值中只要有⼀个True,就会返回True
2.或运算是找True的result=True or True print('result:',result) --->result:True
result=True or False print('result:',result) --->result:True
result=False or True print('result:',result) --->result:True
result=False or False print('result:',result) --->result:False
==总结:有True则True==
-
d.非布尔值的与或运算
原理:当我们对非布尔值进行与或运算时,python会将其当作布尔值先进行运算,最终返回原值
1.非布尔值的与运算
与运算规则:与运算找的是False,如果第一个值是Fasle,则不看第二个值;如果第一个值是False,则返回第一个,否则返回第二个值result=1 and 2 print('result:',result) --->result:2
result=1 and 0 print('result:',result) --->result:0
result=0 and 2 print('result:',result) --->result:0
result=None and 0 print('result:',result) --->result:None
2.非布尔值的或运算
或运算规则:或运算找的是True,如果第一个值是True,则不看第二个值;如果第一个值是True,则直接返回第一个值,否则返回第二个值result=1 or 2 print('result:',result) --->result:1
result=0 or 1 print('result:',result) --->result:1
result=1 < 2 and 2 < 3 (1 < 2 < 3) print('result:',result) --->result:True
1.2.5 条件运算符(三元运算符)
- 语法:语句1 if 表达式 语句2
- 原理:if 来判断表达式,如果表达式的结果为False,则执行语句2;如果表达式的结果 为True,则执行语句1(即判断表达式是否正确)先对 if 表达式进行求值判断
-
print('python') if True else print('java') --->python
print('python') if False else print('java') --->java
-
a=10 b=20 print('a的值比较大') if a>b else print('b的值比较大') --->b的值比较大
-
#获取a、b之间的最大值 a = 80 b = 10 m = a if a > b else b print(m) --->m=80
ps:条件运算符与条件控制语句是有区别的!!!
- 运算符的优先级(采用非布尔值的运算)
例如:a = 2 or 3 and 4 输出结果到底为啥呢?
推理开始:(推理)
第一种情况:or、and优先级一样高 ---->4
第二种情况:or 比 and 优先级高 ---->4
第三种情况:and 比 or 优先级高 ---->2
pycharm执行一波,可知输出结果为2~
想知道其他的优先级,可以参考优先级参照表哦~
小练习
a=not 4>2 and 5<6 or 3<4
print(a) --->True
总结:not 比 and、or 优先级都高
a=not (4>2 and 5<6 or 3<4)
print(a) --->False
有括号先算括号里的