算術運算符也即數學運算符,用來對數字進行數學運算,比如加減乘除。下表列出了 Python 支持所有基本算術運算符。
接下來將對表 1 中各個算術運算符的用法逐一講解。
加法運算符很簡單,和數學中的規則一樣,請看下面的代碼:
m = 10n = 97sum1 = m + nx = 7.2y = 15.3sum2 = x + yprint("sum1=%d, sum2=%.2f" % (sum1, sum2) )運行結果:
sum1=107, sum2=22.50
拼接字符串當+用於數字時表示加法,但是當+用於字符串時,它還有拼接字符串(將兩個字符串連接為一個)的作用,請看代碼:
name = "C語言中文網"url = "http://c.biancheng.net/"age = 8info = name + "的網址是" + url + ",它已經" + str(age) + "歲了。"print(info)運行結果:
C語言中文網的網址是http://c.biancheng.net/,它已經8歲了。
str() 函數用來將整數類型的 age 轉換成字符串。
- 減法運算符減法運算也和數學中的規則相同,請看代碼:
n = 45m = -nx = -83.5y = -xprint(m, ",", y)運行結果:
-45 , 83.5
求負-除了可以用作減法運算之外,還可以用作求負運算(正數變負數,負數變正數),請看下面的代碼:
n = 45n_neg = -nf = -83.5f_neg = -fprint(n_neg, ",", f_neg)運行結果:
-45 , 83.5
注意,單獨使用+是無效的,不會改變數字的值,例如:n = 45m = +nx = -83.5y = +xprint(m, ",", y)運行結果:
45 , -83.5
*乘法運算符乘法運算也和數學中的規則相同,請看代碼:
n = 4 * 25f = 34.5 * 2print(n, ",", f)運行結果:
100 , 69.0
重複字符串*除了可以用作乘法運算,還可以用來重複字符串,也即將 n 個同樣的字符串連接起來,請看代碼:
str1 = "hello "print(str1 * 4)運行結果:
hello hello hello hello
/ 和 // 除法運算符Python 支持/和//兩個除法運算符,但它們之間是有區別的:
請看下面的例子:print("23/5 =", 23/5)print("23//5 =", 23print("23.0//5 =", 23.0print("----")print("25/5 =", 25/5)print("25//5 =", 25print("25.0//5 =", 25.0print("----")print("12.4/3.5 =", 12.4/3.5)print("12.4//3.5 =", 12.4運行結果:
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從運行結果可以發現:
Python 2.x 中的除法
需要注意的是,除數始終不能為 0,除以 0 是沒有意義的,這將導致 ZeroDivisionError 錯誤。在某些程式語言中,除以 0 的結果是無窮大(包括正無窮大和負無窮大)。Python 2.x 只提供了一種除法運算,就是/,它的行為和大部分程式語言中/的行為是一樣的:
請看下面的代碼:print "18/6 =", 18/6print "47/7 =", 47/7print "-"print "18.0/6 =", 18.0/6print "47.0/7 =", 47.0/7print "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從運行結果可以發現兩點:
** 次方(乘方)運算符
本例中小數求餘的四個結果都不精確,而是近似值,這和小數在底層的存儲有關係,有興趣的讀者請猛擊《小數在內存中是如何存儲的,揭秘諾貝爾獎級別的設計(長篇神文)》了解更多。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))運行結果:
----次方運算----
3**4 = 81
2**5 = 32
----開方運算----
81**(1/4) = 3.0
32**(1/5) = 2.0