国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python入門篇之?dāng)?shù)字

2019-11-25 18:08:04
字體:
供稿:網(wǎng)友

數(shù)字類型
 
數(shù)字提供了標(biāo)量貯存和直接訪問。它是不可更改類型,也就是說變更數(shù)字的值會生成新的對象。當(dāng)然,這個過程無論對程序員還是對用戶都是透明的,并不會影響軟件的開發(fā)方式。 Python 支持多種數(shù)字類型:整型、長整型、布爾型、雙精度浮點型、十進制浮點型和復(fù)數(shù)。
創(chuàng)建數(shù)值對象并用其賦值
(數(shù)字對象)
創(chuàng)建數(shù)值對象和給變量賦值一樣同樣簡單:

復(fù)制代碼 代碼如下:

>>> anInt=1
>>> along=-555555555555L
>>> afloat=3.141595468565
>>> acomplex=1.334+4.5433j

更新數(shù)字對象

通過給數(shù)字對象(重新)賦值, 您可以“更新”一個數(shù)值對象。我們之所以給更新這兩個字加上引號,是因為實際上你并沒有更新該對象的原始數(shù)值。這是因為數(shù)值對象是不可改變對象。Python 的對象模型與常規(guī)對象模型有些不同。你所認(rèn)為的更新實際上是生成了一個新的數(shù)值對象,并得到它的引用。 在學(xué)習(xí)編程的過程中, 我們一直接受這樣的教育,變量就像一個盒子, 里面裝著變量的值。在Python中,變量更像一個指針指向裝變量值的盒子。對不可改變類型來說,你無法改變盒子的內(nèi)容,但你可以將指針指向一個新盒子。每次將另外的數(shù)字賦給變量的時候,實際上創(chuàng)建了一個新的對象并把它賦給變量.(不僅僅是數(shù)字,對于所有的不可變類型,都是這么回事)

復(fù)制代碼 代碼如下:

anInt += 1
aFloat = 2.718281828

通過下面的代碼測試:
 

復(fù)制代碼 代碼如下:

>>> anInt=1
>>> id(anInt)
10416152
>>> anInt+=1
>>> id(anInt)
10416140

如何刪除數(shù)字對象

按照Python的法則,你無法真正刪除一個數(shù)值對象,你僅僅是不再使用它而已。如果你實際上想刪除一個數(shù)值對象的引用,使用del語句。刪除對象的引用之后,你就不能再使用這個引用(變量名), 除非你給它賦一個新值。如果試圖使用一個已經(jīng)被刪除的對象引用,會引發(fā) NameError 異常。

復(fù)制代碼 代碼如下:

del anInt
del aLong, aFloat, aComplex 

Python的四種主要數(shù)字類型
 
1.整型
 
Python 有幾種整數(shù)類型。布爾類型是只有兩個值的整型。常規(guī)整型是絕大多數(shù)現(xiàn)代系統(tǒng)都能識別的整型。Python 也有長整數(shù)類型。然而,它表示的數(shù)值大小遠超過C 語言的長整數(shù)。下面我們先來了解一下這些類型,然后再來研究那些用于Python整數(shù)類型的運算符和內(nèi)建函數(shù)。
 
1.1 布爾型

Python 從版本 2.3 開始支持布爾類型。該類型的取值范圍只有兩個值,也就是布爾值 True和布爾值 False。

1.2 標(biāo)準(zhǔn)整數(shù)類型

Python 的標(biāo)準(zhǔn)整數(shù)類型是最通用的數(shù)字類型。在大多數(shù)32位機器上,標(biāo)準(zhǔn)整數(shù)類型的取值范圍是-231到231-1,也就是-2,147,483,648到2,147,483,647。如果在64位機器上使用64位編譯器編譯Python,那么在這個系統(tǒng)上的整數(shù)將是 64 位。下面是一些 Python 標(biāo)準(zhǔn)整數(shù)類型對象的例子:
0101 84 -237 0x80 017 -680 -0X92
Python標(biāo)準(zhǔn)整數(shù)類型等價于C的(有符號)長整型。整數(shù)一般以十進制表示,但是 Python也支持八進制或十六進制來表示整數(shù)。如果八進制整數(shù)以數(shù)字“0”開始, 十六進制整數(shù)則以“0x”或“0X”開始。

1.3 長整型

關(guān)于Python長整數(shù)類型我們必須要提的是,請不要將它和C或其它編譯型語言的長整數(shù)類型混淆。那些語言的長整數(shù)典型的取值范圍是32位或64位。Python的長整數(shù)類型能表達的數(shù)值僅僅與你的機器支持的(虛擬)內(nèi)存大小有關(guān),換句話說,Python 能輕松表達很大很大很大的整數(shù)。長整數(shù)類型是標(biāo)準(zhǔn)整數(shù)類型的超集,當(dāng)你的程序需要使用比標(biāo)準(zhǔn)整數(shù)類型更大的整數(shù)時,長整數(shù)類型就有用武之地了。在一個整數(shù)值后面加個 L(大寫或小寫都可以),表示這個整數(shù)是長整數(shù)。這個整數(shù)可以是十進制,八進制,或十六進制。下面是一些長整數(shù)的例子:

復(fù)制代碼 代碼如下:

16384L -0x4E8L 017L -2147483648l 052144364L
299792458l 0xDECADEDEADBEEFBADFEEDDEAL -5432101234L
Edit By Vheavens
Edit By Vheavens

核心風(fēng)格:用大寫字母 “L”表示長整數(shù),目前整型和長整型正在逐漸緩慢的統(tǒng)一,您只有在對長整數(shù)調(diào)用repr()函數(shù)時才有機會看到“L”,如果對長整數(shù)對象調(diào)用 str()函數(shù)就看不到 L。舉例如下:

復(fù)制代碼 代碼如下:

>>> aLong = 999999999l
>>> aLong
999999999L
>>> print aLong
999999999 

1.4 整型和長整型的統(tǒng)一
 
這兩種整數(shù)類型正在逐漸統(tǒng)一為一種。在 Python 2.2 以前,標(biāo)準(zhǔn)整數(shù)類型對象超出取值范圍會溢出(比如上面提到的大于 232 的數(shù)),但是從 Python2.2 以后就再也沒有這樣的錯誤了。
 

復(fù)制代碼 代碼如下:

>>> 9999 ** 8
Traceback (most recent call last):
File "<stdin>", line 1, in ?
OverflowError: integer exponentiation
Python 2.2
>>> 9999 ** 8
99920027994400699944002799920001L 

雙精度浮點數(shù)
 
Python中的浮點數(shù)類似C語言中的double類型,是雙精度浮點數(shù),可以用直接的十進制或科學(xué)計數(shù)法表示。每個浮點數(shù)占8個字節(jié)(64比特),完全遵守IEEE754號規(guī)范(52M/11E/1S),其中52個比特用于表示底,11個比特用于表示指數(shù)(可表示的范圍大約是正負(fù) 10 的 308.25次方),剩下的一個比特表示符號。這看上去相當(dāng)完美,然而,實際精度依賴于機器架構(gòu)和創(chuàng)建 Python 解釋器的編譯器。浮點數(shù)值通常都有一個小數(shù)點和一個可選的后綴e(大寫或小寫,表示科學(xué)計數(shù)法)。在e和指數(shù)之間可以用正(+)或負(fù)(-)表示指數(shù)的正負(fù)(正數(shù)的話可以省略符號)。下面是一些典型的浮點數(shù)值的例子:
 

復(fù)制代碼 代碼如下:

0.0 -777. 1.6 -5.555567119 96e3 * 1.0
4.3e25 9.384e-23 -2.172818 float(12) 1.000000001
3.1416 4.2E-10 -90. 6.022e23 -1.609E-19 

復(fù)數(shù) 
 
一個實數(shù)和一個虛數(shù)的組合構(gòu)成一個復(fù)數(shù)。一個復(fù)數(shù)是一對有序浮點數(shù)(x, y)。表示為x + yj,其中x是實數(shù)部分,y是虛數(shù)部分。漸漸的復(fù)數(shù)在日常運算,機械,電子等行業(yè)獲得了廣泛的應(yīng)用。由于一些研究人員不斷的重復(fù)制造用于復(fù)數(shù)運算的工具,在很久以前的Python1.4 版本里,復(fù)數(shù)終于成為一個真正的Python 數(shù)據(jù)類型。
下面是 Python 語言中有關(guān)復(fù)數(shù)的幾個概念:

虛數(shù)不能單獨存在,它們總是和一個值為 0.0 的實數(shù)部分一起來構(gòu)成一個復(fù)數(shù)。

復(fù)數(shù)由實數(shù)部分和虛數(shù)部分構(gòu)成

表示虛數(shù)的語法: real+imagj

實數(shù)部分和虛數(shù)部分都是浮點數(shù)

虛數(shù)部分必須有后綴j或J。


1.復(fù)數(shù)的內(nèi)建屬性
復(fù)數(shù)對象擁有數(shù)據(jù)屬性,分別為該復(fù)數(shù)的實部和虛部。復(fù)數(shù)還擁有conjugate 方法,調(diào)用它可以返回該復(fù)數(shù)的共軛復(fù)數(shù)對象。
 
復(fù)數(shù)屬性

屬性                   描述
num.real             該復(fù)數(shù)的實部
num num.imag         該復(fù)數(shù)的虛部
num.conjugate()      返回該復(fù)數(shù)的共軛復(fù)數(shù)

復(fù)制代碼 代碼如下:

>>> c=2.3+2.5j
>>> c.real
2.3
>>> c.imag
2.5
>>> c.conjugate()
(2.3-2.5j)

運算符
 
數(shù)值類型可進行多種運算。從標(biāo)準(zhǔn)運算符到數(shù)值運算符,甚至還有專門的整數(shù)運算符。

5.5.1 混合模式運算符

Python支持不同的數(shù)字類型相加。當(dāng)一個整數(shù)和一個浮點數(shù)相加時, 系統(tǒng)會決定使用整數(shù)加法還是浮點數(shù)加法(實際上并不存在混合運算)。Python使用數(shù)字類型強制轉(zhuǎn)換的方法來解決數(shù)字類型不一致的問題,也就是說它會強制將一個操作數(shù)轉(zhuǎn)換為同另一個操作數(shù)相同的數(shù)據(jù)類型。這種操作不是隨意進行的, 它遵循以下基本規(guī)則:
 
首先,如果兩個操作數(shù)都是同一種數(shù)據(jù)類型,沒有必要進行類型轉(zhuǎn)換。僅當(dāng)兩個操作數(shù)類型不一致時, Python才會去檢查一個操作數(shù)是否可以轉(zhuǎn)換為另一類型的操作數(shù)。如果可以,轉(zhuǎn)換它并返回轉(zhuǎn)換結(jié)果。
 
由于某些轉(zhuǎn)換是不可能的,比如果將一個復(fù)數(shù)轉(zhuǎn)換為非復(fù)數(shù)類型,將一個浮點數(shù)轉(zhuǎn)換為整數(shù)等等,因此轉(zhuǎn)換過程必須遵守幾個規(guī)則。要將一個整數(shù)轉(zhuǎn)換為浮點數(shù),只要在整數(shù)后面加個.0就可以了。要將一個非復(fù)數(shù)轉(zhuǎn)換為復(fù)數(shù),則只需要要加上一個 “0j”的虛數(shù)部分。
 
這些類型轉(zhuǎn)換的基本原則是: 整數(shù)轉(zhuǎn)換為浮點數(shù),非復(fù)數(shù)轉(zhuǎn)換為復(fù)數(shù)。在 Python 語言參考中這樣描述coerce()方法:
如果有一個操作數(shù)是復(fù)數(shù), 另一個操作數(shù)被轉(zhuǎn)換為復(fù)數(shù)。
否則,如果有一個操作數(shù)是浮點數(shù), 另一個操作數(shù)被轉(zhuǎn)換為浮點數(shù)。
否則, 如果有一個操作數(shù)是長整數(shù),則另一個操作數(shù)被轉(zhuǎn)換為長整數(shù);
否則,兩者必然都是普通整數(shù),無須類型轉(zhuǎn)換。
數(shù)字類型之間的轉(zhuǎn)換是自動進行的,程序員無須自己編碼處理類型轉(zhuǎn)換。Python 提供了 coerce() 內(nèi)建函數(shù)來幫助你實現(xiàn)這種轉(zhuǎn)換。
 
參見下面的流程圖闡釋了強制轉(zhuǎn)換的規(guī)則:

算術(shù)運算符
 
Python 支持單目運算符正號(+)和負(fù)號(-), 雙目運算符, +,-,*,/,%,還有 ** ,分別表示加法,減法,乘法,除法,取余,和冪運算。從 Python2.2 起,還增加了一種新的整除運算符//。

傳統(tǒng)除法
如果是整數(shù)除法, 傳統(tǒng)除法會舍去小數(shù)部分,返回一個整數(shù)(地板除)。如果操作數(shù)之一是浮點數(shù),則執(zhí)行真正的除法。包括 Python 語言在內(nèi)的很多語言都是這種行為。看下面的例子:

復(fù)制代碼 代碼如下:

>>> 1 / 2 # perform integer result (floor) # 地板除
0
>>> 1.0 / 2.0 # returns actual quotient#真正除法
0.5 

真正的除法 
 
除法運算總是返回真實的商,不管操作數(shù)是整數(shù)還是浮點數(shù)。在未來版本的 Python中,這將是除法運算的標(biāo)準(zhǔn)行為。現(xiàn)階段通過執(zhí)行from __future__ import division指令,也可以做到這一點。
 

復(fù)制代碼 代碼如下:

>>> from __future__ import division
>>>
>>> 1 / 2 # returns real quotient
0.5
>>> 1.0 / 2.0 # returns real quotient
0.5 

地板除

從Python 2.2開始,一個新的運算符//已經(jīng)被增加進來,以執(zhí)行地板除:// 除法不管操作數(shù)何種數(shù)值類型,總是舍去小數(shù)部分,返回數(shù)字序列中比真正的商小的最接近的數(shù)字。
 

復(fù)制代碼 代碼如下:

>>> 1 // 2 # floors result, returns integer # 地板除, 返回整數(shù)
0
>>> 1.0 // 2.0 # floors result, returns float # 地板除, 返回浮點數(shù)
0.0
>>> -1 // 2 # move left on number line# 返回比 主站蜘蛛池模板: 乌什县| 合江县| 璧山县| 五华县| 门头沟区| 东兰县| 钦州市| 藁城市| 南召县| 东安县| 乌拉特前旗| 大城县| 遵化市| 金阳县| 台中市| 青冈县| 潞西市| 阳东县| 陆河县| 南投市| 敦煌市| 资源县| 寿光市| 柳江县| 翁牛特旗| 怀仁县| 门头沟区| 资中县| 孝昌县| 清河县| 且末县| 邛崃市| 峡江县| 乌兰察布市| 呈贡县| 大关县| 石渠县| 铅山县| 樟树市| 霍林郭勒市| 理塘县|