python 零基礎(chǔ)入門教程第 2 章:基本數(shù)據(jù)類型 (一)

一、什么是數(shù)據(jù)類型
編程語言通過一些復(fù)雜的計(jì)算機(jī)物理底層機(jī)制,創(chuàng)造不同類型的數(shù)據(jù),用來表示現(xiàn)實(shí)世界中的不同信息,以便于計(jì)算機(jī)更好的存儲(chǔ)和計(jì)算。
每種編程語言都會(huì)有一些基本的數(shù)據(jù)類型用來表示現(xiàn)實(shí)世界中的常見信息。
Python 中的常見數(shù)據(jù)類型如下
數(shù)值類型

序列類型

散列類型

其他類型

二、數(shù)值類型
1. 整數(shù)類型(int)
python 中整數(shù)類型用 int
表示,與數(shù)學(xué)中的整數(shù)概念一致
age = 18
其中 age 是變量名,=
是賦值運(yùn)算符,18
是值。
上面的代碼表示創(chuàng)建一個(gè)整數(shù) 18 然后賦值給變量 age。
1.變量
在程序運(yùn)行過程中會(huì)有一些中間值,在稍后的執(zhí)行中會(huì)用到,這時(shí)可以將這些中間值賦值給變量,然后在后面的代碼中通過調(diào)用這些變量名來獲取這些值。可以簡單的理解為給這些值取一個(gè)別名,這個(gè)別名就代表這個(gè)值。
變量的命名規(guī)則:
由大小寫字母 A-Za-z,數(shù)字 0-9 和下劃線
_
組成不能以數(shù)字開頭
不能是關(guān)鍵字
變量名大小寫敏感
# 正確的案例lucky_num = 88lucky_num2 = 888
# 錯(cuò)誤的案例1lucky_num = 88
# 上面的age 和 Age是兩個(gè)不同的變量Age = 19
python 官方占用了一些變量名作為程序的關(guān)鍵字,總共 35 個(gè),這些關(guān)鍵字不能作為自定義變量名使用。
import keywordprint(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
2.賦值運(yùn)算符
在 python 中 = 是賦值運(yùn)算符,而不是數(shù)學(xué)意義上的等于號(hào)。python 解釋器會(huì)先計(jì)算 = 右邊的表達(dá)式,然后將結(jié)果復(fù)制給 = 左邊的變量。
res = 1 ? ? ? ? ? # 定義變量res賦值為1res = res + 1 ? ? # 先計(jì)算res + 1 再賦值給變量resres ? ? ? ? ? ? ? # res的值為2
運(yùn)行結(jié)果:
2
3.type 函數(shù)和 print 函數(shù)
python 提供了內(nèi)建函數(shù) type
用來查看值或者變量的類型。
只需要將變量或者值作為參數(shù)傳入 type
函數(shù)即可。
type(age)
運(yùn)行結(jié)果
int
type(18)
運(yùn)行結(jié)果:
int
print
函數(shù)用來在屏幕上輸出傳入的數(shù)據(jù)的字符串表現(xiàn)形式,是代碼調(diào)試最重要的函數(shù)。
print(age)print(type(age))# 注意交互式輸出和print函數(shù)輸出的區(qū)別
運(yùn)行結(jié)果:
18
<class 'int'>
4.整數(shù)的常見表示形式
在 python 中整數(shù)最常見的是 10 進(jìn)制整數(shù),也有二進(jìn)制,八進(jìn)制和十六進(jìn)制。
a = 10 ?# 十進(jìn)制print('a的類型為:', type(a), a)
a 的類型為: <class 'int'> 10
b = 0b1110 ?# 二進(jìn)制print('b的類型為:', type(b),b)
b 的類型為: <class 'int'> 14
c = 0o57 ? ?# 八進(jìn)制print('c的類型為:', type(c),c)
c 的類型為: <class 'int'> 47
d = 0xa5c ? # 十六進(jìn)制print('d的類型為:', type(d), d)
d 的類型為: <class 'int'> 2652
5.整數(shù)的取值范圍
python 中整數(shù)類型的理論取值范圍是[-無窮,無窮],實(shí)際取值范圍受限于運(yùn)行 python 程序的計(jì)算機(jī)內(nèi)存大小。
2. 浮點(diǎn)數(shù)類型(float)
python 中浮點(diǎn)數(shù)數(shù)用 float 表示,與數(shù)學(xué)中的實(shí)數(shù)概念一致,也可以理解為有小數(shù)。
a = 0.0print('a的類型為:', type(a))
a 的類型為: <class 'float'>
1.浮點(diǎn)數(shù)的表現(xiàn)形式
在 python 中浮點(diǎn)數(shù)可以表示為 a.b
的格式,也可以表示為小寫或大寫 E
的科學(xué)計(jì)算法。例如:
a = 0.0print('a的類型為:', type(a))
a 的類型為: <class 'float'>
# 小數(shù)部分為零可以省略不寫b = 76.print('b的類型為:', type(b))
b 的類型為: <class 'float'>
c = -3.1415926print('c的類型為:', type(c))
c 的類型為: <class 'float'>
d = 9.5e-2print('d的類型為:', type(d))
d 的類型為: <class 'float'>
思考:
浮點(diǎn)數(shù)可以表示所有的整數(shù)數(shù)值,python 為何要同時(shí)提供兩種數(shù)據(jù)類型?
相同的操作整數(shù)要比浮點(diǎn)數(shù)快5-20倍
2.數(shù)學(xué)運(yùn)算符
與數(shù)學(xué)中的常用運(yùn)算符一致

注意一個(gè)浮點(diǎn)數(shù)和一個(gè)整數(shù)進(jìn)行運(yùn)算后的結(jié)果一定為浮點(diǎn)數(shù)
2+1.0
3.0
9/3 # 除法運(yùn)算的結(jié)果一定為float類型
3.0
9//2 # 地板除,向下取整
4
3.組合賦值運(yùn)算符
賦值運(yùn)算符與算術(shù)運(yùn)算符可以組合使用,注意算術(shù)運(yùn)算符要寫在前面且中間不能有空格。

體現(xiàn)了程序員的"懶惰",這種懶惰大力提倡,使得代碼簡潔和高效。
a = 1a += 2 ?# ?a = a+2a
3
4. 浮點(diǎn)數(shù)的不精確性
整數(shù)和浮點(diǎn)數(shù)在計(jì)算機(jī)中的表示不同,python 提供無限制且準(zhǔn)確的整數(shù)計(jì)算,浮點(diǎn)數(shù)卻是不精確的,例如:
0.2+0.1
0.30000000000000004
根據(jù) sys.float_info.dig 的值,計(jì)算機(jī)只能提供 15 個(gè)數(shù)字的準(zhǔn)確性。浮點(diǎn)數(shù)在超過 15 位數(shù)字計(jì)算中產(chǎn)生的誤差與計(jì)算機(jī)內(nèi)部采用二進(jìn)制運(yùn)算有關(guān)。
import sysprint(sys.float_info.dig)
15
思考:
3.1415926535897924*1.23456789 的計(jì)算怎么準(zhǔn)確
拓展:高精度浮點(diǎn)運(yùn)算類型
import decimala = decimal.Decimal('3.141952653')b = decimal.Decimal('1.23456789')print(a * b)
3.87895385729411217
5. 浮點(diǎn)數(shù)和整數(shù)的相互轉(zhuǎn)化
int
,float
是 python 的內(nèi)置函數(shù),通過它們可以對(duì)浮點(diǎn)數(shù)類型和整數(shù)類型相互轉(zhuǎn)化
a = 1.9# 轉(zhuǎn)化為整數(shù)# 通過調(diào)用int函數(shù),提取浮點(diǎn)數(shù)的整數(shù)部分b = int(a)print(b, type(b))
1 <class 'int'>
c = 2# 轉(zhuǎn)化為浮點(diǎn)數(shù)# 通過調(diào)用float函數(shù),將整數(shù)轉(zhuǎn)化為小數(shù)部分為0的浮點(diǎn)數(shù)d = float(c)print(d, type(d))
2.0 <class 'float'>
3.復(fù)數(shù)
科學(xué)計(jì)算中的復(fù)數(shù)。
a = 12.3+4jprint('a的類型為:', type(a))# 運(yùn)行結(jié)果:a的類型為: <class 'complex'>print(a.real)print(a.imag)
a 的類型為: <class 'complex'>
12.3
4.0
聲明:本文作者為檸檬班心藍(lán)老師,轉(zhuǎn)載請(qǐng)注明出處!