C語言中文網 目錄

Python算術運算符及用法詳解

Python 支持所有的基本算術運算符,這些算術運算符用于執行基本的數學運算,如加、減、乘、除和求余等。下面是 7 個基本的算術運算符。

+:加法運算符,例如如下代碼:
a = 5.2
b = 3.1
the_sum = a + b
# sum的值為8.3
print("the_sum的值為:", the_sum)
除此之外,“+”還可以作為字符串(包括后續要介紹的序列)的連接運算符。例如如下代碼:
s1 = 'Hello, '
s2 = 'Charlie'
# 使用+連接兩個字符串
print(s1 + s2)

-:減法運算符。例如如下代碼:
c = 5.2
d = 3.1
sub = c - d
# sub的值為2.1
print("sub的值為:", sub)
此外,“-”除可以作為減法運算利之外,還可以作為求負的運算符。請看如下代碼:
# 定義變量x,其值為-5.0
x = -5.0
# 將x求負,其值變成5.0
x = -x
print(x)
但單目運算符“+”則不對操作數做任何改變,例如如下代碼:
# 定義變量y,其值為-5.0
y = -5.0
# y值依然是-5.0
y = +y
print(y)

*:乘法運算符。例如如下代碼:
e = 5.2
f = 3.1
multiply = e * f
# multiply的值為16.12
print("multiply的值為:", multiply)
此外,“*”還可以作為字符串(包括后續要介紹的序列)的連接運算符,表示將 N 個字符串連接起來。例如如下代碼:
s3 = 'crazyit '
# 使用*將5個字符串連接起來
print(s3 * 5)
上面代碼將會輸出:

crazyit crazyit crazyit crazyit crazyit


/ 或 //:除法運算符。Python 的除法運算符有兩個:“/”表示普通除法,使用它除出來的結果與平常數學計算的結果是相同的(即除不盡時,會產生小數部分);而“//”表示整除,使用它除出來的結果只有整數部分,小數部分將會被舍棄。例如如下代碼:
print("19/4的結果是:", 19/4)
print("19//4的結果是:", 19//4)
aa = 5.2
bb = 3.1
# aa / bb的值將是1.67741935483871
print("aa/bb的值是:", aa / bb)
# aa // bb值將是1.0
print("aa//bb的值是:", aa // bb)
此外,Python 不允許使用。作為除數,否則將會引發 ZeroDivisionError 錯誤。

在有些編程語言中,0 作為除數會得到無窮大,包括正無窮大或負無窮大。

對于 Python 2.x 而言,它只提供了一個“/”運算符,該運算符是 Python 3.x 中“/”和“//”的綜合版。對于 Python 2.x 中的“/”而言,它既是整除運算符,也是非整除運算符。規則如下:
  • 當兩個操作數都是整數時,Python 2.x 中的“/”就是整除運算符。
  • 當兩個操作數有一個是浮點數(或兩個都是浮點數)時,Python 2.x 中的“/”就是非整除運算符。

例如,在 Python 2.x 的交互式解釋執行器中執行如下代碼:

>>>print(5/2)
2
>>>print(5.0/2)
2.5
>>>print(5/2.0)
2.5
>>>print(5.0/2.0)
2.5


%:求余運算符。Python 不要求求余運算符的兩個操作數都是整數,Python 的求余運算符完全支持對浮點數求余。求余運算的結果不一定總是整數,它是使用第一個操作數來除以第二個操作數,得到一個整除的結果后剩下的值就是余數。

由于求余運算也需要進行除法運算,因此求余運算的第二個操作數不能是 0,否則程序會報出 ZeroDivisionError 錯誤。

例如如下程序:
print("5%3的值為:", 5 % 3) # 輸出2
print("5.2%3.1的值為:",5.2 % 3.1) # 輸出2.1
print("-5.2%-3.1的值為:", -5.2 % -3.1) # 輸出-2.1
print("5.2%-2.9的值為:", 5.2 % -2.9) # 輸出-0.6
print("5.2%-1.5的值為:", 5.2 % -1.5) # 輸出-0.8
print("-5.2%1.5的值為:", -5.2 % 1.5) # 輸出0.8
#print("5對0.0求余的結果是:", 5 % 0.0) # 導致錯誤
運行上面程序,可以看到如下輸出結果:

5%3的值為: 2
5.2%3.1的值為: 2.1
-5.2%-3.1的值為: -2.1
5.2%-2.9的值為: -0.5999999999999996
5.2%-1.5的值為: -0.7999999999999998
-5.2%1.5的值為: 0.7999999999999998

前三個算式的運行結果比較簡單,它們進行的都是很簡單的求余計算。但 5.2 % -2.9 的結果有點奇怪,我們預計它為 -0.6,但實際輸出的是 -0.5999999999999996。這里有兩個問題:
  1. 第一個問題,為什么預計 5.2 % 2.9 的結果是 -0.6 呢?因為 Python 求余運算的邏輯是用被除數減去除數的 N 倍,此處的 N 是 -2,因此得到結果是 0.6。
  2. 第二個問題,為什么實際輸出的是 -0.5999999999999996 呢?這是由浮點數的存儲機制導致的。計算機底層的浮點數的存儲機制并不是精確保存每一個浮點數的值,讀者暫時不需要花太多的時間去理解浮點數的存儲機制,只要知道浮點數在 Python 中可能產生精度丟失的問題就行。比如此處正常計算的結果應該是 -0.6,但實際計算出來的結果是一個非常接近 -0.6 的值。

**:乘方運算符。Python 支持使用“**”作為乘方運算符,這是一個使用非常方便的運算符。由于開方其實是乘方的逆運算,因此實際上使用“**”也可進行開方運算。例如如下代碼:
print('5 的 2 次方:', 5 ** 2) # 25
print('4 的 3 次方:', 4 ** 3) # 64
print('4 的開平方:', 4 ** 0.5) # 2.0
print('27 的開 3 次方:',27 **(1 / 3 )) # 3.0

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo