Python 算术运算符
在Python中,数字是最常用的数据类型。Python使用相同的符号作为基本的算术运算符,即+
表示加法,-
表示减法,*
表示乘法(大多数编程语言使用*
而不是数学/代数中的x
),/
表示除法(数学中的÷
)。
此外,Python还定义了几个其他的算术运算符,它们是“%”(取模运算符),**
(指数运算符)和//
(地板除法运算符)。
算术运算符是二元运算符,它们对两个操作数进行运算。Python完全支持混合算术运算。也就是说,两个操作数可以是两种不同的数值类型。在这种情况下,Python会将较窄的操作数扩展为更宽的类型。整数对象比浮点数对象窄,浮点数比复数对象窄。因此,int和float的算术运算结果是一个float。float和complex的运算结果是一个复数,类似地,整数和复数对象的运算结果是一个复数对象。
让我们通过示例来学习这些运算符。
Python加法运算符(+)
这个运算符读作加号,是一个基本的算术运算符。它将两个数字操作数相加,并返回相加的结果。
在下面的示例中,两个整数变量是“+”运算符的操作数。
a=10
b=20
print ("Addition of two integers")
print ("a =",a,"b =",b,"addition =",a+b)
它将产生以下 输出 −
Addition of two integers
a = 10 b = 20 addition = 30
整数和浮点数相加得到浮点数。
a=10
b=20.5
print ("Addition of integer and float")
print ("a =",a,"b =",b,"addition =",a+b)
它将产生以下 输出 −
Addition of integer and float
a = 10 b = 20.5 addition = 30.5
将浮点数加到复数的结果是一个复数。
a=10+5j
b=20.5
print ("Addition of complex and float")
print ("a=",a,"b=",b,"addition=",a+b)
它将产生以下 输出 。−
Addition of complex and float
a= (10+5j) b= 20.5 addition= (30.5+5j)
Python减法运算符(-)
这个运算符,被称为减号,从第一个操作数中减去第二个操作数。如果第二个操作数比较大,结果是一个负数。
第一个示例展示了两个整数的减法。
a=10
b=20
print ("Subtraction of two integers:")
print ("a =",a,"b =",b,"a-b =",a-b)
print ("a =",a,"b =",b,"b-a =",b-a)
结果 –
Subtraction of two integers
a = 10 b = 20 a-b = -10
a = 10 b = 20 b-a = 10
整数和浮点数的减法遵循相同的原则。
a=10
b=20.5
print ("subtraction of integer and float")
print ("a=",a,"b=",b,"a-b=",a-b)
print ("a=",a,"b=",b,"b-a=",b-a)
它将产生以下 输出 −
subtraction of integer and float
a= 10 b= 20.5 a-b= -10.5
a= 10 b= 20.5 b-a= 10.5
在涉及复数和浮点数的减法中,实部参与运算。
a=10+5j
b=20.5
print ("subtraction of complex and float")
print ("a=",a,"b=",b,"a-b=",a-b)
print ("a=",a,"b=",b,"b-a=",b-a)
它将产生以下 输出 −
subtraction of complex and float
a= (10+5j) b= 20.5 a-b= (-10.5+5j)
a= (10+5j) b= 20.5 b-a= (10.5-5j)
Python 乘法运算符(*)
在Python(以及许多其他编程语言)中,*
(星号)符号被定义为乘法运算符。它返回两个操作数相乘的结果。如果其中任何一个操作数为负数,结果也为负数。如果两个操作数都是负数,则结果为正数。改变操作数的顺序不会改变结果。
a=10
b=20
print ("Multiplication of two integers")
print ("a =",a,"b =",b,"a*b =",a*b)
它将产生以下输出: 输出 −
Multiplication of two integers
a = 10 b = 20 a*b = 200
在乘法运算中,浮点数操作数可以使用标准的小数点表示法或科学计数法。
a=10
b=20.5
print ("Multiplication of integer and float")
print ("a=",a,"b=",b,"a*b=",a*b)
a=-5.55
b=6.75E-3
print ("Multiplication of float and float")
print ("a =",a,"b =",b,"a*b =",a*b)
它将产生以下 输出 –
Multiplication of integer and float
a = 10 b = 20.5 a-b = -10.5
Multiplication of float and float
a = -5.55 b = 0.00675 a*b = -0.037462499999999996
对于涉及一个复数操作数的乘法运算,另一个操作数乘以实部和虚部。
a=10+5j
b=20.5
print ("Multiplication of complex and float")
print ("a =",a,"b =",b,"a*b =",a*b)
它将产生以下 输出 −
Multiplication of complex and float
a = (10+5j) b = 20.5 a*b = (205+102.5j)
Python除法运算符(/
)
/
符号通常称为斜杠。除法运算符的结果 是被除数(左操作数)除以除数(右操作数)。如果任何一个操作数为负数,结果数字则为负数。由于无法将无限大存储在内存中,如果除数为0,Python会引发ZeroDivisionError错误。
在Python中,除法运算符的结果始终是浮点数,即使两个操作数都是整数。
a=10
b=20
print ("Division of two integers")
print ("a=",a,"b=",b,"a/b=",a/b)
print ("a=",a,"b=",b,"b/a=",b/a)
下面是产生的输出: 输出 −
Division of two integers
a= 10 b= 20 a/b= 0.5
a= 10 b= 20 b/a= 2.0
在除法中,浮点数操作数可以使用标准的小数点表示法,也可以使用科学计数法。
a=10
b=-20.5
print ("Division of integer and float")
print ("a=",a,"b=",b,"a/b=",a/b)
a=-2.50
b=1.25E2
print ("Division of float and float")
print ("a=",a,"b=",b,"a/b=",a/b)
它将产生如下 输出 −
Division of integer and float
a= 10 b= -20.5 a/b= -0.4878048780487805
Division of float and float
a= -2.5 b= 125.0 a/b= -0.02
当操作数之一是复数时,将在另一个操作数和复数(实数和虚数)对象的两部分之间进行除法运算。
a=7.5+7.5j
b=2.5
print ("Division of complex and float")
print ("a =",a,"b =",b,"a/b =",a/b)
print ("a =",a,"b =",b,"b/a =",b/a)
它将产生以下 输出 –
Division of complex and float
a = (7.5+7.5j) b = 2.5 a/b = (3+3j)
a = (7.5+7.5j) b = 2.5 b/a = (0.16666666666666666-0.16666666666666666j)
如果分子为0,除法的结果总是0,除非分母为0,在这种情况下,Python会抛出ZeroDivisionError错误,并显示Division by Zero错误消息。
a=0
b=2.5
print ("a=",a,"b=",b,"a/b=",a/b)
print ("a=",a,"b=",b,"b/a=",b/a)
它将产生以下输出
a= 0 b= 2.5 a/b= 0.0
Traceback (most recent call last):
File "C:\Users\mlath\examples\example.py", line 20, in <module>
print ("a=",a,"b=",b,"b/a=",b/a)
~^~
ZeroDivisionError: float division by zero
Python 模运算符(%
)
Python 定义了“%”符号,也被称为百分号符号,作为模运算符(或取模运算符)。它返回在分子被分母除后的余数。它也可以被称为余数运算符。模运算符的结果是整数商之后剩下的数。举个例子,当10被3除时,商是3,余数是1。因此,10%3(通常读作10 mod 3)的结果是1。
如果两个操作数都是整数,那么模运算的值也是整数。如果分子完全可被分母整除,余数为0。如果分子小于分母,模等于分子。如果分母为0,Python 抛出 ZeroDivisionError。
a=10
b=2
print ("a=",a, "b=",b, "a%b=", a%b)
a=10
b=4
print ("a=",a, "b=",b, "a%b=", a%b)
print ("a=",a, "b=",b, "b%a=", b%a)
a=0
b=10
print ("a=",a, "b=",b, "a%b=", a%b)
print ("a=", a, "b=", b, "b%a=",b%a)
它将产生以下 输出 −
a= 10 b= 2 a%b= 0
a= 10 b= 4 a%b= 2
a= 10 b= 4 b%a= 4
a= 0 b= 10 a%b= 0
Traceback (most recent call last):
File "C:\Users\mlath\examples\example.py", line 13, in <module>
print ("a=", a, "b=", b, "b%a=",b%a)
~^~
ZeroDivisionError: integer modulo by zero
如果操作数中有任何一个为浮点型,那么取模的值将始终为浮点型。
a=10
b=2.5
print ("a=",a, "b=",b, "a%b=", a%b)
a=10
b=1.5
print ("a=",a, "b=",b, "a%b=", a%b)
a=7.7
b=2.5
print ("a=",a, "b=",b, "a%b=", a%b)
a=12.4
b=3
print ("a=",a, "b=",b, "a%b=", a%b)
它会产生以下 输出 –
a= 10 b= 2.5 a%b= 0.0
a= 10 b= 1.5 a%b= 1.0
a= 7.7 b= 2.5 a%b= 0.20000000000000018
a= 12.4 b= 3 a%b= 0.40000000000000036
Python不接受复数作为求模运算的操作数。它会抛出TypeError: unsupported operand type(s) for %。
Python指数运算符(**
)
Python使用**
(双星号)作为指数运算符(有时称为求幂运算符)。所以,对于a**b
,可以说a的b次方,甚至是a的第b个幂。
如果指数运算表达式中的两个操作数都是整数,则结果也是整数。如果其中一个是浮点数,则结果是浮点数。同样,如果其中任何一个操作数是复数,则指数运算符返回一个复数。
如果底数为0,则结果为0,如果指数为0,则结果始终为1。
a=10
b=2
print ("a=",a, "b=",b, "a**b=", a**b)
a=10
b=1.5
print ("a=",a, "b=",b, "a**b=", a**b)
a=7.7
b=2
print ("a=",a, "b=",b, "a**b=", a**b)
a=1+2j
b=4
print ("a=",a, "b=",b, "a**b=", a**b)
a=12.4
b=0
print ("a=",a, "b=",b, "a**b=", a**b)
print ("a=",a, "b=",b, "b**a=", b**a)
它将产生以下 输出 −
a= 10 b= 2 a**b= 100
a= 10 b= 1.5 a**b= 31.622776601683793
a= 7.7 b= 2 a**b= 59.290000000000006
a= (1+2j) b= 4 a**b= (-7-24j)
a= 12.4 b= 0 a**b= 1.0
a= 12.4 b= 0 b**a= 0.0
Python 地板除法 (//
)
地板除法也被称为整数除法。Python使用//
(双斜线)符号来表示。与求模运算符不同,求模运算返回的是余数,而地板除法返回的是除法的商。
如果两个操作数都为正数,地板除法返回一个去除小数部分的数字。例如,9.8除以2的地板除法返回4(纯除法是4.9,去除小数部分,结果是4)。
但如果一个操作数为负数,结果向零取整(向负无穷大取整)。-9.8除以2的地板除法返回5(纯除法是-4.9,向0取整后结果是5)。
a=9
b=2
print ("a=",a, "b=",b, "a//b=", a//b)
a=9
b=-2
print ("a=",a, "b=",b, "a//b=", a//b)
a=10
b=1.5
print ("a=",a, "b=",b, "a//b=", a//b)
a=-10
b=1.5
print ("a=",a, "b=",b, "a//b=", a//b)
它将产生以下 输出 −
a= 9 b= 2 a//b= 4
a= 9 b= -2 a//b= -5
a= 10 b= 1.5 a//b= 6.0
a= -10 b= 1.5 a//b= -7.0
Python 复数运算
当两个操作数都是复数对象时,算术运算符的行为略有不同。
复数的加法和减法是对应实部和虚部的简单相加/相减。
a=2.5+3.4j
b=-3+1.0j
print ("Addition of complex numbers - a=",a, "b=",b, "a+b=", a+b)
print ("Subtraction of complex numbers - a=",a, "b=",b, "a-b=", a-b)
将输出以下内容:输出
Addition of complex numbers - a= (2.5+3.4j) b= (-3+1j) a+b= (-0.5+4.4j)
Subtraction of complex numbers - a= (2.5+3.4j) b= (-3+1j) a-b=
(5.5+2.4j)
复数的乘法与代数中两个二项式的乘法类似。如果 “a+bj” 和 “x+yj” 是两个复数,则它们的乘法由以下公式给出−
(a+bj)*(x+yj) = ax+ayj+xbj+byj2 = (ax-by)+(ay+xb)j
例如,
a=6+4j
b=3+2j
c=a*b
c=(18-8)+(12+12)j
c=10+24j
以下程序确认结果−
a=6+4j
b=3+2j
print ("Multplication of complex numbers - a=",a, "b=",b, "a*b=", a*b)
理解两个复数的除法是如何进行的,我们应该使用复数的共轭。Python的复数对象有一个conjugate()方法,它返回一个具有虚部符号相反的复数。
>>> a=5+6j
>>> a.conjugate()
(5-6j)
将两个复数相除时,将分子和分母都乘以分母的共轭。
a=6+4j
b=3+2j
c=a/b
c=(6+4j)/(3+2j)
c=(6+4j)*(3-2j)/3+2j)*(3-2j)
c=(18-12j+12j+8)/(9-6j+6j+4)
c=26/13
c=2+0j
要进行验证,请运行以下代码 −
a=6+4j
b=3+2j
print ("Division of complex numbers - a=",a, "b=",b, "a/b=", a/b)
Python中的复数类不支持模运算符(%
)和地板除法运算符(//
)。