接下來會做乙個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 整數 ...