- 讓Python遇上Office:從編程入門到自動化辦公實踐
- 潘美冰
- 1301字
- 2024-12-28 11:29:30
2.1 數字類型
數字類型是最基礎的類型,我們知道計算機最終是按0和1處理數據的,不過那是二進制的數據,為了方便人類,編程語言應該都是默認使用十進制數據的,所以經過一些處理之后,數字類型又可以細分為整型、浮點型、布爾型和復數。
2.1.1 整型
整型就是整數類型,在Python中用int表示。如果你想查看一個數據是什么類型,可以使用type()函數。int類型可以是正數、負數和0,比如25、-63、0都屬于int類型。整數可以直接參與算術運算,在Python中分別用+、-、*、/這四個符號表示加、減、乘、除運算,而且支持使用小括號,與數學中的運算一樣,小括號表示優先計算,代碼如下:
res = 64 + 32 print(type(res), res) # 輸出:<class 'int'> 96 print(64 - 32) # 輸出:32 print(32 * 2) # 輸出:64 print((2 + 6) * 2) # 輸出:16 print(32 / 2) # 輸出:16.0
從32 / 2輸出的結果可以看出,兩個整數進行除法運算得到的結果不再是整數,而是小數類型,即浮點型。
2.1.2 浮點型
如果你是第一次聽到“浮點”這個詞,千萬不要被它的高大上嚇到了,其實浮點型就是小數,比如3.14、-6.66,之所以稱為浮點型是因為小數用科學記數法表示時,小數點的位置是可以左右浮動的,例如635826可以表示為6.35826×105或63.5826×104,兩者是等價的。由于計算機存儲機制的問題,浮點數是有一定精度的,即浮點型的小數部分參與運算得到的結果可能會不準確,看一下例子就知道了。代碼如下:
res = 3.6 - 3.1 print(type(res), res) # 輸出:<class ' float'> 0.5 print(1.1 - 1) # 輸出:<class ' float'> 0.10000000000000009 print(0.1 + 0.1 + 0.1) # 輸出:0.30000000000000004 print(1 / 3) # 輸出:0.3333333333333333
比如說1.1減去1應該等于0.1才對,但Python運算的結果卻是0.10000000000000009,造成這種不準確的原因并不是Python的Bug,而是計算機的二進制機制只能盡可能接近某個小數,所以,整型運算的結果是準確的,但浮點型可能存在誤差。如果我們需要準確計算小數,比如說金錢,一分錢也不能出錯,我們可以使用Decimal這個類型,之后在類與對象的部分會講到Decimal的用法。
2.1.3 布爾型
布爾即boolean,在Python中用bool表示,這種類型比較簡單,只有True和False兩個值,所以這種類型常用于表示是否、真假、對錯,實際上True和False分別是數字1和0,所以布爾類型也屬于數字類型。在寫法上注意首字母要大寫。現在關于布爾類型我不好舉例,先記住它有True和False兩個值,后面學到條件判斷的時候布爾類型就可以閃亮登場了。代碼如下:
is_ok = True print(type(is_ok), is_ok) # 輸出:<class 'bool'> True has_data = False print(type(has_data), has_data) # 輸出:<class 'bool'> False
2.1.4 復數
Python中復數的概念與高中數學中的復數是一樣的。什么?高中有學過復數嗎?這里還是先來幫讀者回憶一下吧,我們把形如a+bi(a,b均為實數)的數稱為復數,其中a稱為實部,b稱為虛部,i稱為虛數單位(其中i2 = -1)。在Python中,復數表示為“實部+虛部j”,實部和虛部都是浮點型,并且虛部后面加上字母j,下面的代碼定義了a、b兩個復數:
a = 1 + 2j b = 2.3 + 3.2j print(type(a)) # 輸出:<class 'complex'> print(type(b)) # 輸出:<class 'complex'>
我們可以從代碼中看出,Python的復數是complex類型,這種類型提供了訪問實部、虛部以及對應的共軛復數的屬性,但一般我們不用單獨對實部或虛部進行計算,因為Python的復數本來就支持算術運算,代碼如下:
print("實部:", a.real) # 輸出:實部: 1.0 print("虛部:", a.imag) # 輸出:虛部: 2.0 print("共軛復數:", a.conjugate()) # 輸出:共軛復數: (1-2j) print(a + b) # 輸出:(3.3+5.2j) print(a - b) # 輸出:(-1.2999999999999998-1.2000000000000002j) print(a * b) # 輸出:(-4.1000000000000005+7.8j) print(a / b) # 輸出:(0.5602060528010303+0.09014810045074047j)
特別提醒,復數一般用于科學計算,因為本書的內容不會涉及復數的使用,所以如果讀者確實搞不懂復數也沒關系,直接愉快地跳過吧,接下來要講的字符串是一個重點。