本篇筆記知識(shí)點(diǎn):
- 基礎(chǔ)數(shù)字類型
- 運(yùn)算
- 數(shù)據(jù)類型間的轉(zhuǎn)換
</br>
數(shù)字類型
Python 數(shù)字?jǐn)?shù)據(jù)類型用于存儲(chǔ)數(shù)學(xué)上的值,比如整數(shù)、浮點(diǎn)數(shù)、復(fù)數(shù)等。數(shù)字類型在python中是不可變類型,意思是一個(gè)變量被賦予了一個(gè)不一樣的數(shù)值之后就不再是原來的內(nèi)存指向了,python是基于值得內(nèi)存管理機(jī)制。
數(shù)據(jù)類型是不允許改變的,這就意味著如果改變數(shù)字?jǐn)?shù)據(jù)類型的值,將重新分配內(nèi)存空間。

Python 支持三種不同的數(shù)值類型:
- 整型(Int) - 通常被稱為是整型或整數(shù),是正或負(fù)整數(shù),不帶小數(shù)點(diǎn)。Python3 整型是沒有限制大小的,可以當(dāng)作 Long 類型使用,所以 Python3 沒有 Python2 的 Long 類型。
- 浮點(diǎn)型(float) - 浮點(diǎn)型由整數(shù)部分與小數(shù)部分組成,浮點(diǎn)型也可以使用科學(xué)計(jì)數(shù)法表示(2.5e2 = 2.5 x 102 = 250)
- 復(fù)數(shù)( (complex)) - 復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,可以用a + bj,或者complex(a,b)表示, 復(fù)數(shù)的實(shí)部a和虛部b都是浮點(diǎn)型。
二進(jìn)制,八進(jìn)制,十六進(jìn)制
進(jìn)制也就是進(jìn)位制。進(jìn)行加法運(yùn)算時(shí)逢X進(jìn)一(滿X進(jìn)一),進(jìn)行減法運(yùn)算時(shí)借一當(dāng)X,這就是X進(jìn)制,這種進(jìn)制也就包含X個(gè)數(shù)字,基數(shù)為X。
二進(jìn)制 Binary
二進(jìn)制以2為基數(shù),只用0和1兩個(gè)數(shù)字表示數(shù),逢2進(jìn)一。
二進(jìn)制常量用0b或0B開頭,后面跟著二進(jìn)制數(shù)字(0、1)
例,ob010101
八進(jìn)制 Octal
八進(jìn)制,就是其基數(shù)為8,基數(shù)值可以取0、1、2、3、4、5、6、7共8個(gè)值,逢八進(jìn)一。
八進(jìn)制常量以數(shù)字0o或0O開頭(0和小寫或大寫的字母“o”),后面接著數(shù)字0~7構(gòu)成的字符串。
例,0o177
十六進(jìn)制 Hexadecimal
十六進(jìn)制一ox或0X開頭,后面接十六進(jìn)制的數(shù)字0~9和A~F。十六進(jìn)制的數(shù)字編寫成大寫或小寫都可以。
例,ox9ff
各種進(jìn)制的用途
- 2進(jìn)制,是供計(jì)算機(jī)使用的,1,0代表開和關(guān),有和無,機(jī)器只認(rèn)識(shí)2進(jìn)制。
- 10進(jìn)制,當(dāng)然是便于我們?nèi)祟悂硎褂?,我們從小的?xí)慣就是使用十進(jìn)制,這個(gè)毋庸置疑。
- 16進(jìn)制,內(nèi)存地址空間是用16進(jìn)制的數(shù)據(jù)表示, 如0x8049324。
編程中,我們常用的還是10進(jìn)制。
比如:int a = 100,b = 99;
不過,由于數(shù)據(jù)在計(jì)算機(jī)中的表示,最終以二進(jìn)制的形式存在,所以有時(shí)候使用二進(jìn)制,可以更直觀地解決 問題。但二進(jìn)制數(shù)太長了。比如int 類型占用4個(gè)字節(jié),32位。比如100,用int類型的二進(jìn)制數(shù)表達(dá)將是:
0000 0000 0000 0000 0110 0100
面對這么長的數(shù)進(jìn)行思考或操作,沒有人會(huì)喜歡。因此,用16進(jìn)制或8進(jìn)制可以解決這個(gè)問題。因?yàn)椋M(jìn)制越大,數(shù)的表達(dá)長度也就越短。
- 用于計(jì)算機(jī)領(lǐng)域的一種重要的數(shù)制
- 對計(jì)算機(jī)理論的描述,計(jì)算機(jī)硬件電路的設(shè)計(jì)都是很有益的。比如邏輯電路設(shè)計(jì)中,既要考慮功能的完備,還要考慮用盡可能少的硬件,十六進(jìn)制就能起到一些理論分析的作用。比如四位二進(jìn)制電路,最多就是十六種狀態(tài),也就是一種十六進(jìn)制形式,只有這十六種狀態(tài)都被用上了或者盡可能多的被用上,硬件資源才發(fā)揮了盡可能大的作用。
- 十六進(jìn)制更簡短,因?yàn)閾Q算的時(shí)候一位16進(jìn)制數(shù)可以頂4位2進(jìn)制數(shù)。
Python 數(shù)字類型轉(zhuǎn)換
對數(shù)據(jù)內(nèi)置的類型進(jìn)行轉(zhuǎn)換,數(shù)據(jù)類型的轉(zhuǎn)換,只需要將數(shù)據(jù)類型作為函數(shù)名即可。
- int(x) 將x轉(zhuǎn)換為一個(gè)整數(shù)。
- float(x) 將x轉(zhuǎn)換到一個(gè)浮點(diǎn)數(shù)。
- complex(x) 將x轉(zhuǎn)換到一個(gè)復(fù)數(shù),實(shí)數(shù)部分為 x,虛數(shù)部分為 0。
- complex(x, y) 將 x 和 y 轉(zhuǎn)換到一個(gè)復(fù)數(shù),實(shí)數(shù)部分為 x,虛數(shù)部分為 y。x 和 y 是數(shù)字表達(dá)式。
常用的數(shù)據(jù)轉(zhuǎn)換:
| 函數(shù) | 說明 |
|---|---|
| int(x [,base ]) | 將x轉(zhuǎn)換為一個(gè)整數(shù) |
| float(x ) | 將x轉(zhuǎn)換為一個(gè)浮點(diǎn)數(shù) |
| complex(real [,imag ]) | 創(chuàng)建一個(gè)復(fù)數(shù),real為實(shí)部,imag為虛部 |
| str(x ) | 將對象 x 轉(zhuǎn)換為字符串 |
| repr(x ) | 將對象 x 轉(zhuǎn)換為表達(dá)式字符串 |
| eval(str ) | 用來計(jì)算在字符串中的有效Python表達(dá)式,并返回一個(gè)對象 |
| tuple(s ) | 將序列 s 轉(zhuǎn)換為一個(gè)元組 |
| list(s ) | 將序列 s 轉(zhuǎn)換為一個(gè)列表 |
| chr(x ) | 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)Unicode字符 |
| ord(x ) | 將一個(gè)字符轉(zhuǎn)換為它的ASCII整數(shù)值 |
| hex(x ) | 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)十六進(jìn)制字符串 |
| oct(x ) | 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)八進(jìn)制字符串 |
| bin(x ) | 將一個(gè)整數(shù)轉(zhuǎn)換為一個(gè)二進(jìn)制字符串 |
注意:
在整數(shù)除法中,除法(/)總是返回一個(gè)浮點(diǎn)數(shù);
如果只想得到整數(shù)的結(jié)果,丟棄可能的分?jǐn)?shù)部分,可以使用運(yùn)算符 //變量在使用前必須先"定義"(即賦予變量一個(gè)值),否則會(huì)出現(xiàn)錯(cuò)誤:
n # 嘗試訪問一個(gè)未定義的變量
Traceback (mostrecent call last): File "<stdin>", line 1, in<module>
NameError: name'n' is not defined
數(shù)字運(yùn)算
算術(shù)運(yùn)算符
下面以a=10 ,b=20為例進(jìn)行計(jì)算:
| 運(yùn)算符 | 描述 | 實(shí)例 |
|---|---|---|
| + | 加 | 兩個(gè)對象相加 a + b 輸出結(jié)果 30 |
| - | 減 | 得到負(fù)數(shù)或是一個(gè)數(shù)減去另一個(gè)數(shù) a - b 輸出結(jié)果 -10 |
| * | 乘 | 兩個(gè)數(shù)相乘或是返回一個(gè)被重復(fù)若干次的字符串 a * b 輸出結(jié)果 200 |
| / | 除 | b / a 輸出結(jié)果 2 |
| // | 取整除 | 返回商的整數(shù)部分 9//2 輸出結(jié)果 4 , 9.0//2.0 輸出結(jié)果 4.0 |
| % | 取余 | 返回除法的余數(shù) b % a 輸出結(jié)果 0 |
| ** | 指數(shù) | a**b 為10的20次方, 輸出結(jié)果 100000000000000000000 |
[注意]:
混合運(yùn)算時(shí),優(yōu)先級順序?yàn)椋?** 高于 * / % // 高于 + - ,為了避免歧義,建議使用 () 來處理運(yùn)算符優(yōu)先級。
并且,不同類型的數(shù)字在進(jìn)行混合運(yùn)算時(shí),整數(shù)將會(huì)轉(zhuǎn)換成浮點(diǎn)數(shù)進(jìn)行運(yùn)算。
賦值運(yùn)算符
| 運(yùn)算符 | 描述 | 實(shí)例 |
|---|---|---|
| = | 賦值運(yùn)算符 | 把 = 號(hào)右邊的結(jié)果 賦給 左邊的變量,如 num = 1 + 2 * 3,結(jié)果num的值為7 |
| += | 加法賦值運(yùn)算符 | c += a 等效于 c = c + a |
| -= | 減法賦值運(yùn)算符 | c -= a 等效于 c = c - a |
| *= | 乘法賦值運(yùn)算符 | c *= a 等效于 c = c * a |
| /= | 除法賦值運(yùn)算符 | c /= a 等效于 c = c / a |
| %= | 取模賦值運(yùn)算符 | c %= a 等效于 c = c % a |
| **= | 冪賦值運(yùn)算符 | c **= a 等效于 c = c ** a |
| //= | 取整除賦值運(yùn)算符 | c //= a 等效于 c = c // a |
比較(即關(guān)系)運(yùn)算符
| 運(yùn)算符 | 描述 | 示例 |
|---|---|---|
| == | 檢查兩個(gè)操作數(shù)的值是否相等,如果是則條件變?yōu)檎妗?/td> | 如a=3,b=3,則(a == b) 為 True |
| != | 檢查兩個(gè)操作數(shù)的值是否相等,如果值不相等,則條件變?yōu)檎妗?/td> | 如a=1,b=3,則(a != b) 為 True |
| > | 檢查左操作數(shù)的值是否大于右操作數(shù)的值,如果是,則條件成立。 | 如a=7,b=3,則(a > b) 為 True |
| < | 檢查左操作數(shù)的值是否小于右操作數(shù)的值,如果是,則條件成立。 | 如a=7,b=3,則(a < b) 為 False |
| >= | 檢查左操作數(shù)的值是否大于或等于右操作數(shù)的值,如果是,則條件成立。 | 如a=3,b=3,則(a >= b) 為 True |
| <= | 檢查左操作數(shù)的值是否小于或等于右操作數(shù)的值,如果是,則條件成立。 | 如a=3,b=3,則(a <= b) 為 True |
邏輯運(yùn)算符
| 運(yùn)算符 | 邏輯表達(dá)式 | 描述 | 實(shí)例 |
|---|---|---|---|
| and | x and y | 布爾"與":如果 x 為 False,x and y 返回 False,否則它返回 y 的值。 | True and False, 返回 False。 |
| or | x or y | 布爾"或":如果 x 是 True,它返回 True,否則它返回 y 的值。 | False or True, 返回 True。 |
| not | not x | 布爾"非":如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。 | not True 返回 False, not False 返回 True |