Python3標準資料型別之Number

2021-10-07 23:58:44 字數 4671 閱讀 2725

接下來會做乙個python的系列專題,從基礎到高階。下面就從數開始吧!

number是python3中的六個標準資料型別之一。也是不可變資料。

python中的數有四種型別:

每個數都是乙個物件(object),在計算機記憶體中都有自己的乙個 「家」(即位址),這象徵著它的身份。

>>

>id(

2)10914528

>>

>id(

3.0)

140424546017928

>>

>id(

false

)10300256

>>

>id(

4+3j)

140424514687920

這裡的id()函式是python中的乙個內建函式,用於檢視記憶體位址,且得到的結果是唯讀的。上面返回的各個結果不同,也說明了,上面的幾個「數」是不同的物件。除此之外,能夠標識它們不一樣的身份的還有乙個函式,那就是type()函式。

>>

>

type(2

)<

class

'int'

>

>>

>

type

(3.0

)<

class

'float'

>

>>

>

type

(false

)<

class

'bool'

>

>>

>

type(4

+3j)<

class

'complex'

>

內建函式type()能夠檢視物件的型別。與id()的結果類似,type()得到的結果也是唯讀的。

此外,還可以用isinstance()函式來判斷物件型別。

>>

> a =

11>>

>

isinstance

(a,int

)true

>>

>

isinstance

(a,float

)false

數值的運算
>>

>2+

3#加法

5>>

>

4.3-

2#減法

2.3>>

>2*

3#乘法

6>>

>4/

2#除法,得到乙個浮點數

2.0>>

>4//

2#除法,得到乙個整數(也叫地板除)

2>>

>8%

3#取模(取餘)

2>>

>2**

4#乘方

16

除法

這裡單獨來講一下除法,因為它常常會給人帶來困惑,不僅是在python中,在其他高階程式語言中也是一樣的。更何況,在python2和python3中除法也不盡相同,不過本文還是以python3為主來講解。

>>

>4/

22.0

>>

>

>>

>

4.0/

22.0

>>

>4/

2.02.0

>>

>

4.0/

2.02.0

觀察以上**會發現,兩個整數相除,結果卻是浮點數。但,這就是python3的規則。如果我們想要得到整型的結果可以這樣做

>>

>4//

22

//的操作結果是取得兩個數相除的商,「商」肯定是乙個整數,並且這個整數不是/操作之後得到的結果進行四捨五入,通俗地說是「取整」。

奇怪的計算

在python3中,除法運算的結果是浮點數。不過像下面的計算就有點奇怪了。

>>

>

10.0/3

3.3333333333333335

按照數學知識,計算結果應該是3.3333…,後面的3是無限迴圈。這樣的話,計算機就停不下來了,滿屏都是3。為了避免出現這樣的情況,python終結了迴圈,但是並沒有按照「四捨五入」的原則終止。

還有更奇怪的計算結果:

>>

>

0.1+

0.70.7999999999999999

>>

>

0.1+

0.7-

0.8-

1.1102230246251565e-16

>>

>

0.1+

0.2+

0.3-

0.61.1102230246251565e-16

what??,為什麼這麼簡單的問題在計算機會出現這樣的情況?其實,出現這樣的情況是由於十進位制數和二進位制數的轉換。計算機用二進位制數進行計算,但在上面的例子中,我們輸入的是十進位制數,所以計算機需要把十進位制的數轉化為二進位制數,然後再進行計算。但是,在將類似0.1這樣的浮點數轉化為二進位制數時,就出現問題了。0.1轉化為二進位制數後,不會精確等於十進位制數的0.1。同時,計算機儲存的位數是有限制的,所以,就出現了上述現象。實際上,這種問題不僅在python中會遇到,在所有支援浮點數運算的程式語言中都會遇到,它不是python的bug。不過一般情況下,只要簡單地將最終的顯示結果「四捨五入」到所期望的十進位制位數,就會得到滿意的最終結果。

元素交換

python支援下面這種直接解包賦值的操作

>>

> x,y =2,

3>>

>

print

('x='

,x,'y='

,y)x=

2 y=

3>>

> x,y = y,x

>>

>

print

('x='

,x,'y='

,y)x=

3 y=

2

>>

> x,y =2,

3>>

> x,y = y+

2,x-

1>>

>

print

(x,y)

注意,上面的表示式,會不會是y+2先賦值給a,然後a-1再賦值給b呢?答案肯定是不會的,因為等號右邊完成壓包後,左側才解包。所以上面的答案是a=5,y=1

進製轉換

十進位制轉二進位制

>>

>

bin(10)

'0b1010'

十進位制轉八進位制

>>

>

oct(8)

'0o10'

十進位制轉十六進製制

>>

>

hex(12)

'0xc'

型別轉換

整數或數值型字串轉為浮點數。

>>

>

float(2

)2.0

當然,不是說有型別都能轉化為浮點數,當不能轉化時,則會報valueerror

>>

>

float

('a'

)traceback (most recent call last)

: file ""

, line 1,in

valueerror: could not convert string to float

:'a'

轉為整數型

int(x,[base])x可能為字串或數值,將x按照base進製轉換為整數,若base不寫則預設為十進位制。

>>

>

int(

'10',16

)16>>

>

int(

'10',10

)10>>

>

int(

'10',8

)8>>

>

int(

'10',2

)2

常用數學函式

判真假函式

鏈式比較

python支援的一種鏈式比較

>>

>

1< i <

2false

>>

>

1< i <=

2true

Python3之資料型別

1 基本資料型別 數字型別 整型 int 浮點型 float 布林型 bool true 1 false 0 複數型別 complex 算術運算子 賦值運算子 內建函式max min 求最大值最小值 import decimal 2 序列型別 字串str 列表list 元組tuple 序列的建立,型...

Python3基礎之資料型別

1.數字型別 python中數字有四種型別 整數 int 布林型 bool 浮點數 float 和複數 complex 整數 int python中的整數,表示方法和數學上的寫法一樣,例如 1,100,0。十六進製制表示整數使用0x字首和0 9,a f表示,例如 0xff00,0xa5b4c3d2。...

python3資料型別

一 python可以自定義資料型別,預設的資料型別有 1 int 整數 2 float 浮點數 3 complex 複數 4 bool 布林值 5 str 字串 6 list 列表 7 tuple 元組 8 set 集合 9 dict 字典 type 內建函式,可以檢視變數的資料型別 int 整數 ...