Python算術運算子



Python算術運算子

Python算術運算子用於執行數學運算,例如對數字進行加法、減法、乘法、除法等等。算術運算子是二元運算子,因為它們作用於兩個運算元。Python完全支援混合算術運算。也就是說,兩個運算元可以是兩種不同的數字型別。在這種情況下,…

算術運算子型別

下表列出了Python中所有可用的算術運算子

運算子 名稱 示例
+ 加法 a + b = 30
- 減法 a – b = -10
* 乘法 a * b = 200
/ 除法 b / a = 2
% 取模 b % a = 0
** 指數 a**b =10**20
// 地板除 9//2 = 4

讓我們用例子來學習這些運算子。

加法運算子

加法運算子用“+”符號表示。它是一個基本的算術運算子。它將兩側的兩個數值運算元相加,並返回加法結果。

加兩個整數的示例

在下面的示例中,兩個整數變數是“+”運算子的運算元。

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)

減法運算子

減法運算子用“-”符號表示。它從第一個運算元中減去第二個運算元。如果第二個運算元較大,則結果為負數。

減去兩個整數的示例

第一個示例顯示了兩個整數的減法。

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中定義為乘法運算子(與許多其他語言一樣)。它返回其兩側兩個運算元的乘積。如果任何一個運算元為負數,則結果也為負數。如果兩者都為負數,則結果為正數。更改運算元的順序不會更改結果。

乘以兩個整數的示例

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)

除法運算子

“/” 符號通常稱為正斜槓。除法運算的結果是分子(左運算元)除以分母(右運算元)。如果任何一個運算元為負數,則結果為負數。由於無限大無法儲存在記憶體中,如果分母為 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 錯誤,並顯示“除以零”錯誤訊息。

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 將 "%" 符號定義為取模運算子(也稱為模運算子)。它返回分母除以分子後得到的餘數。它也可以稱為餘數運算子。取模運算子的結果是在整數商之後剩下的數字。例如,10 除以 3,商為 3,餘數為 1。因此,10%3(通常讀作 10 模 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 使用 **(雙星號)作為指數運算子(有時稱為“乘方”運算子)。因此,對於 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 使用 //(雙正斜槓)符號來表示。與返回餘數的取模運算不同,地板除返回參與運算的運算元的商。

如果兩個運算元都是正數,則地板除運算子返回一個去除小數部分後的數字。例如,9.8 除以 2 的地板除結果為 4(純除法結果為 4.9,去除小數部分,結果為 4)。

但是,如果其中一個運算元為負數,則結果將舍入到遠離零的方向(朝負無窮大)。-9.8 除以 2 的地板除結果為 -5(純除法結果為 -4.9,遠離 0 舍入)。

地板除運算子示例

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 中的 Complex 類不支援取模運算子 (%) 和地板除運算子 (//)。

廣告