1.运算符
1.1运算符的概念
- 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符则是“+”
1.2运算符的分类
- 算术运算符
- 比较运算符
- 赋值运算符
- 逻辑运算符
- 位运算符
- 成员运算符
- 身份运算符
- 三目运算符
2.算术运算符
2.1算术运算符分类
- 加法运算符 表现形式 +
- 减法运算符 表现形式 -
- 乘法运算符 表现形式 *
- 除法运算符 表现形式 /
- // 整除,只会保留计算后的整数位,总会返回一个整型
- % 取模,求两个数相除的余数
- ** 幂运算,求一个值的几次幂
2.2算术运算符的应用(简单举例)
加法
a1 = 2
b1 = 3
a2 = 'hello'
b2 = 'world'
print(a1 + b1)
print(a2 + b2)
print(a1 + a2)
5
helloworld
Traceback (most recent call last):
TypeError: unsupported operand type(s) for +: 'int' and 'str'
- 我们可以看到
int
类型的数据和str
类型的数据都可以使用加法但是int
和str
不可同时使用
减法
a1 = 2
b1 = 3
a2 = 'hello'
b2 = 'world'
print(a1 - b1)
print(a2 - b2)
print(a2 - a1)
Traceback (most recent call last):
print(a2 - b2)
TypeError: unsupported operand type(s) for -: 'str' and 'str'
-1
- 减法只适用于
int
类型的数据,不支持str
类型的数据
乘法
a1 = 2
b1 = 3
a2 = 'hello'
b2 = 'world'
print(a1 * b1)
print(a2 * a1)
print(a2 * b2)
Traceback (most recent call last):
print(a2 * b2)
TypeError: can't multiply sequence by non-int of type 'str'
6
hellohello
- 乘法支持
int
类型数据相乘,以及int
类型数据和str
类型数据相乘,不支持str
类型数据和str
类型数据相乘
除法
a1 = 2
b1 = 3
a2 = 'hello'
b2 = 'world'
print(a1 / b1)
print(a2 / b2)
print(a2 / a1)
Traceback (most recent call last):
print(a2 / b2)
TypeError: unsupported operand type(s) for /: 'str' and 'str'
0.6666666666666666
- 除法不支持
str
类型的数据 - 除法计算结果是浮点数,即使两个数都是整数,结果也是浮点数
整除
a1 = 20
b1 = 3
print(a1 / b1)
print(a1 // b1)
6.666666666666667
6
- 只取整数部分,总返回一个
int
类型的值
取模
a1 = 20
b1 = 3
print(a1 / b1)
print(a1 % b1)
6.666666666666667
2
- 余数运算,可以得到两个整数相除的余数
幂运算
a1 = 20
b1 = 3
print(a1 ** b1) # 20 的三次方
8000
课堂扩展
- 如果需要同时得到商和余数,可以用
divmod()
该方法的返回值是tuple (x//y, x%y).
a1 = 20
b1 = 3
print(divmod(a1, b1))
(6, 2)
- 因为浮点数精度的问题,Python还存在一些计算方面的小问题要解决这个问题,可以导入
decimal
模块
print(0.1 + 0.1 + 0.1 - 0.3)
print(Decimal('0.1') + Decimal('0.1') + Decimal('0.1') - Decimal('0.3'))
5.551115123125783e-17
0.0
3.比较运算符
3.1比较运算符分类
- 比较是否相等的运算符 表现形式
==
- 比较是否不相等的运算符 表现形式
!=
- 比较是否大于的运算符 表现形式
>
- 比较是否小于的运算符 表现形式
<
- 比较是否大于等于的运算符 表现形式
>=
- 比较是否小于等于的运算符 表现形式
+<
3.2比较运算符的应用(简单举例)
==
运算符
a = 10
b = 20
c = 10
a1 = 'hello'
b1 = 'world'
c1 = 'hello'
print(a == b)
print(a == c)
print(a1 == b1)
print(a1 == c1)
False
True
False
True
!=
运算符
a = 10
b = 20
c = 10
a1 = 'hello'
b1 = 'world'
c1 = 'hello'
print(a != b)
print(a != c)
print(a1 != b1)
print(a1 != c1)
True
False
True
False
>
运算符
a = 10
b = 20
c = 10
a1 = 'hello'
b1 = 'world'
c1 = 'hello'
print(a > b)
print(a > c)
print(a1 > b1)
print(a1 > c1)
False
False
False
False
<
运算符
a = 10
b = 20
c = 10
a1 = 'hello'
b1 = 'world'
c1 = 'hello'
print(a < b)
print(a < c)
print(a1 < b1)
print(a1 < c1)
True
False
True
False
>=
运算符
a = 10
b = 20
c = 10
a1 = 'hello'
b1 = 'world'
c1 = 'hello'
print(a >= b)
print(a >= c)
print(a1 >= b1)
print(a1 >= c1)
False
True
False
True
<=
运算符
a = 10
b = 20
c = 10
a1 = 'hello'
b1 = 'world'
c1 = 'hello'
print(a <= b)
print(a <= c)
print(a1 <= b1)
print(a1 <= c1)
True
True
True
True
总结与注意事项
- 返回值为bool值
print(True == 1)
print(False == 0)
True
True
==
比较数值(int与str不能直接比较)
a = 10
a1 = 'hello'
print(a == a1)
False
!=
<>
不等于
python3中<>
已弃用
python2中还在使用- 字符串与字符串之间是比较ASCII值
- 在连续比较,python的解释机制
a = 10
b = 20
c = 10
d = 30
print(b > a > c) # b > a and a > c
print(a < b < d) # a < b and b < c
print((b > a) > 1) # Ture and Ture > 1
False
True
False
4.赋值运算符
4.1赋值运算符分类
- 简单的运算符 表现形式
=
- 加法赋值运算符 表现形式
+=
- 减法赋值运算符 表现形式
-=
- 乘法赋值运算符 表现形式
*=
- 除法赋值运算符 表现形式
/=
//
整除赋值运算符 表现形式//=
%
取模赋值运算符 表现形式%=
**
幂运算赋值运算符 表现形式**=
2.2赋值运算符的应用(简单举例)
=
a = 10 # 把 10 赋值给 a
print(a)
10
+=
a = 10
a += 2 # 等效于a = a + 2
print(a)
12
-=
a = 10
a -= 2 # 等效于a = a - 2
print(a)
8
*=
a = 10
a *= 2 # 等效于a = a * 2
print(a)
20
/=
a = 10
a /= 2 # 等效于a = a / 2
print(a)
5.0
//=
a = 10
a //= 2 # 等效于a = a // 2
print(a)
5
%=
a = 10
a %= 2 # 等效于a = a % 2
print(a)
0
**=
a = 10
a **= 2 # 等效于a = a ** 2
print(a)
100
注意事项
+=
不能拆开写+
=
,以此类推
5.逻辑运算符
5.1逻辑运算符分类
- 布尔‘与’运算符 表现形式
and
- 布尔‘或’运算符 表现形式
or
- 布尔‘非’运算符 表现形式
not
5.2逻辑运算符的应用(简单举例)
and
- a and b a与b都为True则返回为True,否则为False
a = True
b = True
a1 = False
b1 = False
print(a and b)
print(a and a1)
print(a1 and b1)
True
False
False
or
- a or b a与b只要有一个为True则返回为True,否则为False
a = True
b = True
a1 = False
b1 = False
print(a or b)
print(a or a1)
print(a1 or b1)
True
True
False
not
- not a 当a为True, not a则为False
a = True
a1 = False
print(not a)
print(not a1)
False
True
注意事项
- 短路(懒惰)原则
当and
运算符运行时,遇到第一个为False则不会继续判断下一个值
当or
运算符运行时,遇到第一个为True则不会继续判断下一个值 and
or
not
(全部都是小写字母)
6.位运算符
按位运算符是把数字看作二进制来进行计算的。
7.成员运算符
7.1成员运算符
python 中,in
与 not in
是用来作为逻辑判断的另一种方式。
文字解释可以理解成这样。
in
右侧的内容里,是否包含了左侧的内容。 包含返回真,不包含返回假。
not in
右侧的内容里是否不包含左侧的内容。不包含返回真,包含返回假。
in
与 not in
可以放在任何允许添加条件判断的位置。如while
、 if
等。
7.2成员运算符的应用(简单举例)
list1 = [1, 2, 3, 4, 5, 6]
a = 1
b = 7
if a in list1:
print('a是list1的元素')
else:
print('a不是list1的元素')
if b in list1:
print('b是list1的元素')
else:
print('b不是list1的元素')
a是list1的元素
b不是list1的元素
注意事项
全部小写
8.身份运算符
8.1身份运算符
is
用于判断两个变量是否引用同一个, 会对比其中两个变量的地址。
is not
用于判断两个变量是否引用自不同的对象。也会比较地址
8.2身份运算符的应用(简单举例)
a = b = [1, 2]
c = [1, 2]
print(a is b)
print(a is c)
print(a is not b)
print(a is not c)
True
False
False
True
注意事项
is
与比较运算符==
的区别,两者有根本上的区别,切记不可混用:
is
用于判断两个变量的引用是否为同一个对象(可使用id()
查看),而==
用于判断变量引用的对象的值是否相等!
9.三目运算符
9.1三目运算符
python中的三目运算符表示方法:
True_statements if expression else False_statements
9.2三木运算符的应用(简单举例)
a = 10
b = 20
if a > b:
print('a的值大')
else:
print('b的值大')
print('a的值大' if a > b else 'b的值大')
b的值大
b的值大
运算符的优先级
下表列出了从最高到最低优先级的所有运算符。优先级高的运算符优先计算或处理,同级别的按从左往右的顺序计算(赋值运算符除外,它是按从右往左的顺序)