官术网_书友最值得收藏!

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)

特別提醒,復數一般用于科學計算,因為本書的內容不會涉及復數的使用,所以如果讀者確實搞不懂復數也沒關系,直接愉快地跳過吧,接下來要講的字符串是一個重點。

主站蜘蛛池模板: 义乌市| 贵德县| 临桂县| 益阳市| 宾川县| 秀山| 景东| 武安市| 寿光市| 阿图什市| 柏乡县| 仙桃市| 沁阳市| 诸暨市| 苏尼特右旗| 金塔县| 白银市| 从江县| 景洪市| 隆安县| 沧州市| 台江县| 余干县| 策勒县| 洛阳市| 光泽县| 白沙| 怀宁县| 平谷区| 桂林市| 柯坪县| 通州区| 漳平市| 获嘉县| 安顺市| 包头市| 绵阳市| 新平| 长丰县| 九龙县| 蕲春县|