Python
中的运算符是一种特殊的符号,主要用于实现数值之间的运算。根据操作数据数量的不同,运算符可以分为单目运算符、双目运算符;根据功能的不同,运算符可以分为算术运算符、赋值运算符、比较运算符、逻辑运算符、成员运算符和位运算符。当一个表达式中包含多个运算符时,Python
根据运算符的优先级确定操作数的运算顺序。
7.1 算术运算符
Python
中的算术运算符包括 +
、-
、*
、/
、//
、%
和 **
。它们都是双目运算符,只要在终端输入由两个操作数和一个算术运算符组成的表达式,Python
解释器就会解析表达式,并打印计算结果。
运算符 | 说明 | 示例 | 结果 |
---|---|---|---|
+ | 加法运算 | 13.65 + 10 | 23.65 |
- | 减法运算 | 13.65 - 10 | 3.65 |
* | 乘法运算 | 9 * 2 | 18 |
/ | 除法运算(保留小数) | 9 / 2 | 4.5 |
// | 整除(保留商的整数部分) | 9 / 2 | 4 |
% | 取余数(返回除法的余数) | 9 % 2 | 1 |
** | 幂运算/次方运算 | 2 ** 5 | 32 |
Python
中的算术运算符既支持相同类型的数值运算,也支持不同类型的数值混合运算。进行混合运算时 Python
会强制对数值的类型进行临时类型转换。临时类型转换遵循如下原则:
- 整型与浮点型进行混合运算时,将整型转换为浮点型;
- 其他类型与复数类型运算时,将其他类型转换为复数类型。
动手实验
# 相同数据类型进行运算
print(type(10 + 10), 10 + 10)
print(type(20 - 10), 20 - 10)
print(type(10 * 2), 10 * 2)
print(type(10 / 4), 10 / 4)
print(type(10 // 3), 10 // 3)
print(type(10 % 3), 10 % 3)
print(type(4 ** 2), 4 ** 2)
# 不同数据类型进行运算
print(type(10 + 10.5), 10 + 10.5)
print(type(10.5 - 10), 10.5 - 10)
print(type(10.5 / 2), 10.5 / 2)
print(type(10.5 * 2), 10.5 * 2)
7.2 赋值运算符
赋值运算符的作用是将一个表达式或对象赋值给左值。左值是指一个能位于赋值运算符左边的表达式,通常是一个可修改的变量,不能是一个常量。
动手实验
# 将字符串 hello 赋值给 str1 变量
str1 = 'hello'
# 将整数 100 赋值给 num1
num1 = 100
print(str1)
print(num1)
Python
中的算术运算符可以与赋值运算符组成复合赋值运算符,复合赋值运算符同时具备运算和赋值两项功能。
假设:x=5
和y=2
运算符 | 说明 | 示例 | 等价形式 | 结果 |
---|---|---|---|---|
= | 最基本的赋值运算 | x = y | x = y | x=2 |
+= | 复合加赋值 | x += y | x = x + y | x=7 |
-= | 复合减赋值 | x -= y | x = x - y | x=3 |
*= | 复合乘赋值 | x *= y | x = x * y | x=10 |
/= | 复合除赋值 | x /= y | x = x / y | x=2.5 |
%= | 复合取余数赋值 | x %= y | x = x % y | x=1 |
**= | 复合幂赋值 | x **= y | x = x ** y | x=25 |
//= | 复合取整数赋值 | x //= y | x = x // y | x=2 |
动手实验
# 链式赋值
num1 = num2 = num3 = num4 = num5 = num6 = num7 = 10
# 复合赋值运算
print(num1 += 10) # 加法运算
print(num2 -= 10) # 减法运算
print(num3 *= 2) # 乘法运算
print(num4 /= 2) # 除法运算
print(num5 //= 3) # 短除运算
print(num6 %= 3) # 求余运算
print(num7 **= 2) # 求幂运算
7.3 比较运算符
比较运算符也叫关系运算符,用于比较两个数值以判断它们之间的关系。Python
中的比较运算符包括 ==
、!=
、>
、<
、>=
、<=
,它们通过用于布尔测试,测试的结果只能是 True
或 False
。
运算符 | 说明 |
---|---|
> | 大于,如果左边的值大于右边的值,则返回True,否则返回False |
< | 小于,如果左边的值小于右边的值,则返回True,否则返回False |
== | 等于,如果左右两边的值相等,则返回True,否则返回False |
>= | 大于等于,如果如果左边的值大于或等于右边的值,则返回True,否则返回False |
<= | 小于等于,如果左边的值小于等于右边的值,则返回True,否则返回False |
!= | 不等于,如果左边的值不等于右边的值,则返回True,否则返回False |
动手实验
print(1 == 0) # 判断两个整数相等
print(1 != 0) # 判断两个整数不相等
print(2 > 1) # 判断第一个整数大于第二个整数
print(2 >= 1) # 判断第一个整数大于等于第二个整数
7.4 逻辑运算符
逻辑运算符可以把多个条件按照逻辑进行连接,变成更复杂的条件。Python
中分别使用 and
、or
、not
这 3 个关键字作为逻辑运算符,其中 and
和 or
为双目运算符,not
为单目运算符。
运算符 | 说明 | 格式 | 作用 |
---|---|---|---|
and | 逻辑与运算,等价于数学中的“且” | x and y | 当x和y两个表达式都为真时,x and y的结果才为真,否则为假 |
or | 逻辑或运算,等价于数学中的“或” | x or y | 当x和y两个表达式都为假时,x or y的结果才为假,否则为真 |
not | 逻辑非运算,等价于数学中的“非” | not x | 如果x为真,那么not x的结果为假;如果x为假,那么not x的结果为真。相当于对x取反 |
动手实验
print(1 == 0 or 1 == 1)
print(1 != 0 and 1 == 2)
print(not 2 > 1)
7.5 成员运算符
成员运算符 in
和 not in
用于测试给定数据是否存在于序列(如列表、字符串)中
-
in
:如果指定元素在序列中返回True
,否则返回False
-
not in
:如果指定元素不在序列中返回True
,否则返回False
示例
str1 = 'hello' # 定义一个字符串
print('o' in str1) # 判断字符串“o”是否在字符串变量 str1 中
print('l' not in str1) # 判断字符串“l”是否在字符串变量 str1 中
7.6 运算符优先级
Python
支持使用多个不同的运算符连接简单表达式实现相对复杂的功能,为了避免含有多个运算符的表达式出现歧义,Python
为每种运算符都设定了优先级。如果表达式中的运算符优先级相同,按从左向右的顺序执行;如果表达式中包含括号,那么解释器会优先执行小括号中的表达式。
7.7 运算符运用训练
- 请定义三个变量num1、num2和result1,使用输入函数分别向num1和num2输入整型数据10和6,分别运用所有算术运算符让num1与num2进行加、减、乘、除、取模、取整除、幂等。最后将计算的结果保存到result1中并输出结果。
输出结果:
请输入第一个数字:10
请输入第二个数字:6
10 + 6 = 16
10 - 6 = 4
10 * 6 = 60
10 / 6 = 1.6666666666666667
10 % 6 = 4
10 // 6 = 1
10 ** 6 = 1000000
- 请定义三个变量myChar、myNum和result2,使用输入函数分别向myChar和myNum输入Z和90,需要将Z转换为对应的整型数字,然后分别运用比较运算符让myChar与myNum进行等于、不等于、大于、小于、大于等于、小于等于进行关系比较。最后将计算的结果保存到result2中并输出结果。
输出结果:
请输入一个字符:Z
请输入一个数字:90
Z == 90 为: True
Z != 90 为: False
Z > 90 为: False
Z < 90 为: False
Z >= 90 为: True
Z <= 90 为: True
- 请定义两个变量n和m,使用输入函数分别向n和m输入8和5,然后分别运用复合赋值运算符让n与m进行加等于、减等于、乘等于、除等于、取模等于、取整除等于、幂等于进行运算并赋值。最后将计算的结果保存到n中并输出结果。注意:n的值会随着计算方式的不同发生改变。
输出结果:
请输入第一个数字15
请输入第二个数字7
n结果为 22
n结果为 15
n结果为 105
n结果为 15.0
n结果为 1.0
n结果为 0.0
n结果为 0.0
- 请定义四个变量i、j、k和result3,使用输入函数分别向i、j和k输入13.4、11.2和10.9,然后使用比较运算符以及逻辑运算符进行配合进行i > j 逻辑与 i < k、i > j 逻辑或 i < k的运算,而逻辑非运算符对i > j进行运算。最后将计算的结果保存到result3中并输出结果。
输出结果:
请输入第一个数字:13.4
请输入第二个数字:11.2
请输入第三个数字:10.9
结果为:False
结果为:True
结果为:False