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

2.2 數據類型

計算機是可以做數學計算的機器,計算機程序理所當然可以處理各種數值。計算機能處理的遠不止數值,還有文本、圖形、音頻、視頻、網頁等各種各樣的數據,不同的數據需要定義不同的數據類型。Python 3中有6種標準的數據類型:Number(數字)、String(字符串)、List(列表)、Tuple(元組)、Sets(集合)、Dictionary(字典)。本節首先講解Number數值類型,其他5種數據類型在后續章節介紹。

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

2.2.1 整型

int通常被稱為整型或整數,是正、負整數,不帶小數點。在Python 3中,整型沒有限制大小,可以當作long類型使用,所以Python 3沒有Python 2的long類型。

例如,公司組織旅游,大家坐上了大巴準備出發,現在需要統計有多少人在車上,boss吩咐小萌清點一下人數,小萌花了兩分鐘逐個點了一遍,總計51人。小萌在交互模式下輸入:

        >>> 51
        51

這里使用的是整型。

到服務區后,大家休息了一下,再次準備出發時,boss又吩咐小萌清點一下人數。小萌苦笑一下,看來又得花兩分鐘清點人數了,為什么不叫一個人幫忙從車的另一頭清點呢?于是小萌叫小智幫忙從另一頭清點一下人數。一分鐘后,小萌和小智在車中間碰上了,小智告訴小萌他的計數是25人,小萌在交互模式下輸入:

        >>> 25+25
        50

小萌準備把數字報告給boss,突然想到上次報告的是51人,這次是50人,數字不同啊,還差1人,小萌在交互模式下輸入:

        >>> 51-50
        1

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

        >>> 25+25+1
        51

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

        >>> 51*2
        102

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

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

        >>> 153/51
        3.0

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

        >>> 155/51
        3.0392156862745097

如果按這個結果分,就沒有辦法分了。這是怎么回事呢?

原因是:在整數除法中,除法(/)計算結果是浮點數,即使兩個整數恰好整除,結果也是浮點數。如果只想得到整數的結果,丟棄可能的分數部分,可以使用地板除(//),整數的地板除(//)永遠是整數,即使除不盡。

更改前面輸入的數據:

        >>> 153//51
        3

這時就不是浮點數了。再看看155顆糖的結果:

        >>>155//51
        3

153和155除以51都是3,這個就不對了。原來還有一個余數。

因為地板除(//)只取結果的整數部分,所以Python提供了一個余數運算,可以得到兩個整數相除的余數,看看153和155對51的取余:

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

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

2.2.2 浮點型

浮點型由整數部分與小數部分組成,也可以使用科學計數法表示。

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

        >>> 3.3*102
        336.59999999999997

結果怎么這么長?小萌看傻了,不過冷靜一看,原來是:整數和浮點數在計算機內部存儲的方式不同,整數運算永遠是精確的,而浮點數運算可能會有四舍五入的誤差。

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

        >>> 3.3*102+15.5
        352.09999999999997

這結果好像很凌亂,應該這么輸入:

        >>> 336.6+15.5
        352.1

這個結果就好看多了。報告給boss,一共花費352.1元。

小萌又開始思考了,浮點數相乘結果這么怪,浮點數的除法是怎樣的呢?想到了就實踐,輸入如下:

        >>> 153/51.0
        3.0

這個結果和153除以51的結果是一樣的,如果155除以51.0呢?輸入如下:

        >>>155/51.0
        3.0392156862745097

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

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

可以看出,得到的結果都是浮點型的。

2.2.3 復數

復數由實數部分和虛數部分構成,可以用a + bj或complex(a, b)表示,復數的實部a和虛部b都是浮點型。

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

2.2.4 數據類型轉換

有時我們要對數據內置的類型進行轉換,只需要將數據類型作為函數名即可。

數據的類型轉換時有如下4個函數可以使用:


● int(x) 將x轉換為一個整數。

● float(x) 將x轉換為一個浮點數。

● complex(x) 將x轉換為一個復數,實數部分為x,虛數部分為0。

● complex(x, y) 將x和y轉換為一個復數,實數部分為x,虛數部分為y。x和y是數字表達式。


比如,小萌去購物,計算出應付金額是352.1元,超市老板為免除找零的麻煩,讓小萌支付352元。Python中的轉換可以執行如下:

        >>> int(352.1)
        352

很容易就得到了轉換后的結果。但是金額的操作必須用浮點數進行記賬,這個容易,用float函數就行了。輸入如下:

        >>> float(352.1)
        352.1

這樣就得到了浮點型數據。

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

        >>> float(int(352.1))
        352.0

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

這其實是函數的嵌套,后面會進行具體介紹,此處做相關了解即可。

2.2.5 常量

所謂常量,就是不能變的變量,比如常用的數學常數π就是一個常量。在Python中,通常用全部大寫的變量名表示常量。

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


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

● E:數學常量e,即自然對數。


這兩個常量將會在后續章節中使用,具體的用法在使用中體現。

主站蜘蛛池模板: 静海县| 泗阳县| 司法| 中方县| 天镇县| 宁城县| 娄底市| 岢岚县| 合江县| 洞口县| 屏东县| 弋阳县| 彰化县| 内江市| 旬邑县| 石屏县| 洪湖市| 临猗县| 台江县| 博野县| 府谷县| 武川县| 桃园县| 滦南县| 鱼台县| 察雅县| 伊宁市| 高邑县| 伊宁县| 松桃| 石嘴山市| 四川省| 高青县| 葵青区| 广昌县| 渝中区| 睢宁县| 北安市| 哈尔滨市| 建德市| 普宁市|