- Python3.5從零開始學
- 劉宇宙
- 2357字
- 2020-11-28 16:06:59
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,即自然對數。
這兩個常量將會在后續章節中使用,具體的用法在使用中體現。
- Learning C# by Developing Games with Unity 2020
- 移動UI設計(微課版)
- Manga Studio Ex 5 Cookbook
- Git高手之路
- Java面向對象程序開發及實戰
- Groovy for Domain:specific Languages(Second Edition)
- Scientific Computing with Scala
- 青少年學Python(第1冊)
- Building RESTful Python Web Services
- Terraform:多云、混合云環境下實現基礎設施即代碼(第2版)
- Cocos2d-x by Example:Beginner's Guide(Second Edition)
- Deep Learning for Natural Language Processing
- Python Automation Cookbook
- JavaScript Concurrency
- 量子計算機編程:從入門到實踐