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

2.2 數(shù)據(jù)類型

計(jì)算機(jī)是可以做數(shù)學(xué)計(jì)算的機(jī)器,計(jì)算機(jī)程序理所當(dāng)然可以處理各種數(shù)值。計(jì)算機(jī)能處理的遠(yuǎn)不止數(shù)值,還有文本、圖形、音頻、視頻、網(wǎng)頁(yè)等各種各樣的數(shù)據(jù),不同的數(shù)據(jù)需要定義不同的數(shù)據(jù)類型。Python 3中有6種標(biāo)準(zhǔn)的對(duì)象類型:Number(數(shù)字)、String(字符串)、List(列表)、Tuple(元組)、Sets(集合)、Dictionary(字典)。本節(jié)首先講解Number數(shù)據(jù)類型,其他5種數(shù)據(jù)類型在后續(xù)章節(jié)介紹。

Python 3支持3種不同的數(shù)值類型:整型(int)、浮點(diǎn)型(float)、復(fù)數(shù)(complex)。

2.2.1 整型

int通常被稱為整型或整數(shù),是正、負(fù)整數(shù),不帶小數(shù)點(diǎn)。在Python 3中,整型沒有限制大小,可以當(dāng)作long類型使用,所以Python 3沒有Python 2的long類型。

例如,公司組織旅游,大家坐上了大巴準(zhǔn)備出發(fā),現(xiàn)在需要統(tǒng)計(jì)有多少人在車上,老板吩咐小萌清點(diǎn)一下人數(shù),小萌花了兩分鐘逐個(gè)點(diǎn)了一遍,總計(jì)51人。小萌在交互模式下輸入:

     >>> 51
     51

這里使用的是整型。

到服務(wù)區(qū)后,大家休息了一下,再次準(zhǔn)備出發(fā)時(shí),老板又吩咐小萌清點(diǎn)一下人數(shù)。小萌苦笑一下,看來又得花兩分鐘清點(diǎn)人數(shù)了,為什么不叫一個(gè)人幫忙從車的另一頭清點(diǎn)呢?于是小萌叫小智幫忙從另一頭清點(diǎn)一下人數(shù)。一分鐘后,小萌和小智在車中間碰上了,小智告訴小萌他的計(jì)數(shù)是25人,小萌在交互模式下輸入:

     >>> 25+25
     50

小萌準(zhǔn)備把數(shù)字報(bào)告給老板,突然想到上次報(bào)告的是51人,這次是50人,數(shù)字不同啊,還差1人,小萌在交互模式下輸入:

     >>> 51-50
     1

怎么少了一人呢?小萌突然慌了,然后仔細(xì)一想,原來是把自己忘加上了,于是再次輸入:

     >>> 25+25+1
     51

這次沒問題了。于是小萌給了老板和上次一樣的答案。老板示意司機(jī)可以發(fā)車了,又突然叫停,看天氣挺熱的,大家路上可能會(huì)口渴,于是吩咐小萌去服務(wù)區(qū)給每人買兩瓶水,再買一大包糖給大家在路上補(bǔ)充能量。每人兩瓶水,一共要買多少瓶呢?小萌在交互模式下輸入:

     >>> 51*2
     102

一共要買102瓶水,這么多,于是小萌讓小智幫忙一起去提水。

水和糖都買回來了,水好分,給每人兩瓶就是,這一大包糖該怎么給大家呢?看包裝袋上有總顆數(shù),一共有153顆,每人多少顆呢?小萌在交互模式下輸入:

     >>> 153/51
     3.0

好了,給每人發(fā)3顆糖就可以了。于是小萌高高興興發(fā)糖去了,小智也幫忙一起發(fā),每人給3顆。糖終于發(fā)完了,小萌很愜意,坐下來補(bǔ)充能量。小萌突然想到了什么,有153顆糖,分給51人,每人3顆糖沒錯(cuò),但計(jì)算出來的結(jié)果怎么是3.0呢?假如有155顆糖,計(jì)算結(jié)果會(huì)是怎樣的呢?輸入以下數(shù)據(jù):

     >>> 155/51
     3.0392156862745097

如果按這個(gè)結(jié)果分,就沒有辦法分了。這是怎么回事呢?

原因是:在整數(shù)除法中,除法(/)計(jì)算結(jié)果是浮點(diǎn)數(shù),即使兩個(gè)整數(shù)恰好整除,結(jié)果也是浮點(diǎn)數(shù)。如果只想得到整數(shù)的結(jié)果,丟棄可能的分?jǐn)?shù)部分,可以使用地板除(//),整數(shù)的地板除(//)永遠(yuǎn)是整數(shù),即使除不盡。

更改前面輸入的數(shù)據(jù):

     >>> 153//51
     3

這時(shí)就不是浮點(diǎn)數(shù)了。再看看155顆糖的結(jié)果:

     >>> 155//51
     3

153和155除以51都是3,這個(gè)就不對(duì)了。原來還有一個(gè)余數(shù)。

因?yàn)榈匕宄?/)只取結(jié)果的整數(shù)部分,所以Python提供了一個(gè)余數(shù)運(yùn)算,可以得到兩個(gè)整數(shù)相除的余數(shù),看看153和155對(duì)51的取余:

     >>> 153%51
     0
     >>> 155%51
     2

這次的結(jié)果就是想要的了。假如有155顆糖,就會(huì)多出2顆。小萌細(xì)細(xì)想著,嘴角泛起一絲自然的微笑,小智也發(fā)完糖了,過來向小萌匯報(bào),看見小萌的表情,小智心里頓時(shí)暖暖的,無須報(bào)告了。

2.2.2 浮點(diǎn)型

浮點(diǎn)型由整數(shù)部分與小數(shù)部分組成,也可以使用科學(xué)計(jì)數(shù)法表示。

比如,小萌還在細(xì)想中,老板突然打斷了她的思維,問她總共花了多少錢。小萌理了一下思緒,每瓶水3.3元,一共102瓶,總共多少錢呢?輸入如下:

     >>> 3.3*102
     336.59999999999997

結(jié)果怎么這么長(zhǎng)?小萌看傻了,不過冷靜一看,原來是:整數(shù)和浮點(diǎn)數(shù)在計(jì)算機(jī)內(nèi)部存儲(chǔ)的方式不同,整數(shù)運(yùn)算永遠(yuǎn)是精確的,而浮點(diǎn)數(shù)運(yùn)算可能會(huì)有四舍五入的誤差。

“老板,一共336.6元”。“好的,加上買糖的錢了嗎”?小萌暗罵自己,瞧我這腦筋。再計(jì)算一次,每瓶水3.3元,一共102瓶,再加上一包糖15.5元,輸入如下:

     >>> 3.3*102+15.5
     352.09999999999997

這結(jié)果好像很凌亂,應(yīng)該這么輸入:

     >>> 336.6+15.5
     352.1

這個(gè)結(jié)果就好看多了。報(bào)告給老板,一共花費(fèi)352.1元。

小萌又開始思考了,浮點(diǎn)數(shù)相乘結(jié)果這么怪,浮點(diǎn)數(shù)的除法是怎樣的呢?想到了就實(shí)踐,輸入如下:

     >>> 153/51.0
     3.0

這個(gè)結(jié)果和153除以51的結(jié)果是一樣的,如果155除以51.0呢?輸入如下:

     >>> 155/51.0
     3.0392156862745097

結(jié)果和155除以51也是一樣的。那做地板除和取余又是怎樣的呢?輸入如下:

     >>> 155//51.0
     3.0
     >>> 155%51.0
     2.0

可以看出,得到的結(jié)果都是浮點(diǎn)型的。

2.2.3 復(fù)數(shù)

復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,可以用a+bj或complex(a,b)表示,復(fù)數(shù)的實(shí)部a和虛部b都是浮點(diǎn)型。

Python支持復(fù)數(shù),不過Python的復(fù)數(shù)我們當(dāng)前階段使用或接觸得比較少,此處就不再具體講解,讀者有一個(gè)概念即可,有興趣可以自行查閱相關(guān)資料。

2.2.4 數(shù)據(jù)類型轉(zhuǎn)換

有時(shí)我們要對(duì)數(shù)據(jù)內(nèi)置的類型進(jìn)行轉(zhuǎn)換,只需要將數(shù)據(jù)類型作為函數(shù)名即可。

數(shù)據(jù)的類型轉(zhuǎn)換時(shí)有如下4個(gè)函數(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á)式。

比如,小萌去購(gòu)物,計(jì)算出應(yīng)付金額是352.1元,超市老板為免除找零的麻煩,讓小萌支付352元。Python中的轉(zhuǎn)換可以執(zhí)行如下:

     >>> int(352.1)
     352

很容易就得到了轉(zhuǎn)換后的結(jié)果。但是金額的操作必須用浮點(diǎn)數(shù)進(jìn)行記賬,這個(gè)容易,用float函數(shù)就行了。輸入如下:

     >>> float(352.1)
     352.1

這樣就得到了浮點(diǎn)型數(shù)據(jù)。

結(jié)果跟輸入的一樣,這下怎么辦呢?把int函數(shù)放入float函數(shù)中是否可以呢?嘗試一下:

     >>> float(int(352.1))
     352.0

這里先把352.1取整,得到整數(shù)352,再用float將352轉(zhuǎn)換成浮點(diǎn)數(shù)352.0,這樣就得到我們需要的結(jié)果了。雖然輸入的字符看起來有點(diǎn)復(fù)雜,但是還是得到結(jié)果了。

這其實(shí)是函數(shù)的嵌套,后面會(huì)進(jìn)行具體介紹,此處做相關(guān)了解即可。

2.2.5 常量

所謂常量,就是不能改變現(xiàn)有的值的變量,比如常用的數(shù)學(xué)常數(shù)π就是一個(gè)常量。在Python中,通常用全部大寫的變量名表示常量。

Python中有兩個(gè)比較常見的常量,即PI和E。

PI:數(shù)學(xué)常量pi(圓周率,一般以π表示)。

E:數(shù)學(xué)常量e,即自然對(duì)數(shù)。

這兩個(gè)常量將會(huì)在后續(xù)章節(jié)中使用,具體的用法在使用中體現(xiàn)。

主站蜘蛛池模板: 绩溪县| 安徽省| 怀仁县| 兴海县| 宜兴市| 辉南县| 北宁市| 科技| 克山县| 东至县| 台山市| 杂多县| 军事| 兴海县| 许昌县| 莱芜市| 新平| 兴安盟| 美姑县| 江北区| 阿荣旗| 合江县| 临汾市| 文安县| 石景山区| 扎鲁特旗| 米泉市| 昭觉县| 无棣县| 武安市| 江西省| 盐边县| 祁阳县| 武清区| 绥中县| 封开县| 柏乡县| 洛阳市| 华阴市| 密云县| 宁城县|