算術運算符也即數學運算符,用來對數字進行數學運算,比如加減乘除。下表列出了 Python 支持所有基本算術運算符。
運算符 | 說明 | 實例 | 結果 |
---|---|---|---|
+ | 加 | 12.45 + 15 | 27.45 |
- | 減 | 4.56 - 0.26 | 4.3 |
* | 乘 | 5 * 3.6 | 18.0 |
/ | 除法(和數學中的規則一樣) | 7 / 2 | 3.5 |
// | 整除(只保留商的整數部分) | 7 // 2 | 3 |
% | 取餘,即返回除法的餘數 | 7 % 2 | 1 |
** | 冪運算/次方運算,即返回 x 的 y 次方 | 2 ** 4 | 16,即 24 |
接下來將對錶 1 中各個算術運算符的用法逐一講解。
+ 加法運算符
加法運算符很簡單,和數學中的規則一樣,請看下面的代碼:
- m = 10
- n = 97
- sum1 = m + n
- x = 7.2
- y = 15.3
- sum2 = x + y
- print("sum1=%d, sum2=%.2f" % (sum1, sum2) )
運行結果:
sum1=107, sum2=22.50
拼接字符串
當+
用於數字時表示加法,但是當+
用於字符串時,它還有拼接字符串(將兩個字符串連接爲一個)的作用,請看代碼:
- name = "C語言中文網"
- url = "http://c.biancheng.net/"
- age = 8
- info = name + "的網址是" + url + ",它已經" + str(age) + "歲了。"
- print(info)
運行結果:
C語言中文網的網址是http://c.biancheng.net/,它已經8歲了。
str() 函數用來將整數類型的 age 轉換成字符串。
- 減法運算符
減法運算也和數學中的規則相同,請看代碼:
- n = 45
- m = -n
- x = -83.5
- y = -x
- print(m, ",", y)
運行結果:
-45 , 83.5
求負
-
除了可以用作減法運算之外,還可以用作求負運算(正數變負數,負數變正數),請看下面的代碼:
- n = 45
- n_neg = -n
- f = -83.5
- f_neg = -f
- print(n_neg, ",", f_neg)
運行結果:
-45 , 83.5
注意,單獨使用+
是無效的,不會改變數字的值,例如:
- n = 45
- m = +n
- x = -83.5
- y = +x
- print(m, ",", y)
運行結果:
45 , -83.5
*乘法運算符
乘法運算也和數學中的規則相同,請看代碼:
- n = 4 * 25
- f = 34.5 * 2
- print(n, ",", f)
運行結果:
100 , 69.0
重複字符串
*
除了可以用作乘法運算,還可以用來重複字符串,也即將 n 個同樣的字符串連接起來,請看代碼:
- str1 = "hello "
- print(str1 * 4)
運行結果:
hello hello hello hello
/ 和 // 除法運算符
Python 支持/
和//
兩個除法運算符,但它們之間是有區別的:
/
表示普通除法,使用它計算出來的結果和數學中的計算結果相同。//
表示整除,只保留結果的整數部分,捨棄小數部分;注意是直接丟掉小數部分,而不是四捨五入。
請看下面的例子:
- #整數不能除盡
- print("23/5 =", 23/5)
- print("23//5 =", 23//5)
- print("23.0//5 =", 23.0//5)
- print("-------------------")
- #整數能除盡
- print("25/5 =", 25/5)
- print("25//5 =", 25//5)
- print("25.0//5 =", 25.0//5)
- print("-------------------")
- #小數除法
- print("12.4/3.5 =", 12.4/3.5)
- print("12.4//3.5 =", 12.4//3.5)
運行結果:
23/5 = 4.6
23//5 = 4
23.0//5 = 4.0
-------------------
25/5 = 5.0
25//5 = 5
25.0//5 = 5.0
-------------------
12.4/3.5 = 3.542857142857143
12.4//3.5 = 3.0
從運行結果可以發現:
/
的計算結果總是小數,不管是否能除盡,也不管參與運算的是整數還是小數。- 當有小數參與運算時,
//
結果纔是小數,否則就是整數。
需要注意的是,除數始終不能爲 0,除以 0 是沒有意義的,這將導致 ZeroDivisionError 錯誤。在某些編程語言中,除以 0 的結果是無窮大(包括正無窮大和負無窮大)。
Python 2.x 中的除法
Python 2.x 只提供了一種除法運算,就是/
,它的行爲和大部分編程語言中/
的行爲是一樣的:
- 當
/
兩邊都是整數時,結果始終是整數;如果不能除盡,就直接捨棄小數部分。 - 當
/
兩邊有一個是小數時,結果始終是小數;如果恰好除盡,小數部分就是 0。
請看下面的代碼:
- #整數除法
- print "18/6 =", 18/6
- print "47/7 =", 47/7
- print "----------------"
- #小數除法
- print "18.0/6 =", 18.0/6
- print "47.0/7 =", 47.0/7
- print "29.5/4.2 =", 29.5/4.2
運行結果:
18/6 = 3
47/7 = 6
----------------
18.0/6 = 3.0
47.0/7 = 6.71428571429
29.5/4.2 = 7.02380952381
你可以將 Python 2.x 中的/
看作 Python 3.x 中/
和//
的結合體,因爲 Python 2.x 中/
的行爲有點奇怪,所以 Python 3.x 增加了//
運算符,用以規範除法運算的行爲。
% 求餘運算符
Python % 運算符用來求得兩個數相除的餘數,包括整數和小數。Python 使用第一個數字除以第二個數字,得到一個整數的商,剩下的值就是餘數。對於小數,求餘的結果一般也是小數。
注意,求餘運算的本質是除法運算,所以第二個數字也不能是 0,否則會導致 ZeroDivisionError 錯誤。
Python % 使用示例:
- print("-----整數求餘-----")
- print("15%6 =", 15%6)
- print("-15%6 =", -15%6)
- print("15%-6 =", 15%-6)
- print("-15%-6 =", -15%-6)
- print("-----小數求餘-----")
- print("7.7%2.2 =", 7.7%2.2)
- print("-7.7%2.2 =", -7.7%2.2)
- print("7.7%-2.2 =", 7.7%-2.2)
- print("-7.7%-2.2 =", -7.7%-2.2)
- print("---整數和小數運算---")
- print("23.5%6 =", 23.5%6)
- print("23%6.5 =", 23%6.5)
- print("23.5%-6 =", 23.5%-6)
- print("-23%6.5 =", -23%6.5)
- print("-23%-6.5 =", -23%-6.5)
運行結果:
-----整數求餘-----
15%6 = 3
-15%6 = 3
15%-6 = -3
-15%-6 = -3
-----小數求餘-----
7.7%2.2 = 1.0999999999999996
-7.7%2.2 = 1.1000000000000005
7.7%-2.2 = -1.1000000000000005
-7.7%-2.2 = -1.0999999999999996
---整數和小數運算---
23.5%6 = 5.5
23%6.5 = 3.5
23.5%-6 = -0.5
-23%6.5 = 3.0
-23%-6.5 = -3.5
從運行結果可以發現兩點:
運行結果:
----次方運算----
3**4 = 81
2**5 = 32
----開方運算----
81**(1/4) = 3.0
32**(1/5) = 2.0
- 只有當第二個數字是負數時,求餘的結果纔是負數。換句話說,求餘結果的正負和第一個數字沒有關係,只由第二個數字決定。
%
兩邊的數字都是整數時,求餘的結果也是整數;但是只要有一個數字是小數,求餘的結果就是小數。-
** 次方(乘方)運算符
Python ** 運算符用來求一個 x 的 y 次方,也即次方(乘方)運算符。
由於開方是次方的逆運算,所以也可以使用 ** 運算符間接地實現開方運算。
Python ** 運算符示例: - print('----次方運算----')
- print('3**4 =', 3**4)
- print('2**5 =', 2**5)
- print('----開方運算----')
- print('81**(1/4) =', 81**(1/4))
- print('32**(1/5) =', 32**(1/5))