python核心編程-第五章-我的筆記

  1. 簡介python

        ①Python中數字支持如下類型:整型、長整型、布爾型、雙精度浮點型、十進制浮點型和複數dom

        ②建立數字對象和給變量賦值同樣】函數

        ③用del刪除對對象的引用。刪除以後,沒法再使用這個引用(變量名),不然會拋出NameError異常spa

>>> a = 123
>>> a
123
>>> del a
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>NameError : name 'a' is not defined

  2.整型code

(1)布爾型    該類型取值範圍只要兩個值:布爾值True 和 布爾值False orm

(2)標準整型   長整型對象

①python標準整型取值範圍是 -231~231-1,也就是-2 147 483 648~2 147 483 648.字符串

②python標準整型等價於C中的長整型io

③整型通常以10進製表示,但python也支持八進制、十六進制。八進制整數以0開始,十六進制整數以0x 或 0X開始ast

④在整型的後面加上大寫的L來代表這是一個長整型

3.浮點型

浮點型一般有一個小數點和一個可選的後綴e表示科學記數法,e後面接指數,e和指數之間用正負號表示指數的正負,正數能夠省略符號。

4.複數

①複數的幾個概念:

虛數不能單獨存在,它們老是和一個實數一塊兒構成複數

複數由實數部分和虛數部分構成

表示虛數的語法:real + imagj

實數部分和虛數部分都是浮點型

虛數部分必須有後綴j或J

②複數的內建屬性:

注:共軛複數是指兩個實部相等、虛部互爲相反數的複數(conjugate complex number)。當虛部不爲0時,共軛複數就是實部相等虛部相反;當虛部爲0時,共軛複數就是其自己。

>>> acomplex = 2.22-1.33j
>>> acomplex
(2.22-1.33j)
>>> acomplex.real
2.22
>>> acomplex.imag
1.33
>>> acomplex.conjugate()
(2.22+1.33j)

5.操做符

(1)混合模式操做符

python中不一樣類型的數字相加時,會使用數字類型強制轉換的方式解決數字類型不一致的問題。轉換規則在於:

若是一個操做數是複數,則另外一個操做數被轉換爲複數;

不然,若是有一個是浮點數,另外一個被轉換成浮點數;

不然,若是有一個是長整型,另外一個被轉換成長整型;

不然,二者都是整型,無須轉換

(2)算術操做符

①python中除法包括一下幾種:

傳統除法,操做符"/"。傳統除法的兩個操做數若是都是整型,那麼傳統除法會捨去小數部分,返回一個整型;若是其中一個操做數是浮點數,則執行真正的除法。

>>> 1 / 2
0
>>> 1.0 / 2
0.5

真正的除法是無論操做數是整型仍是浮點型,老是返回真正的商,這是Python將來的標準。現階段,經過執行 from __future__ import division 指令,操縱符"/"不管兩個操做數是整型仍是浮點型,均執行真正的除法

>>> from __future__ import division
>>> 1 / 2
0.5
>>> 1.0 / 2
0.5

地板除,python 2.2 引入的新操做符"//",執行地板除,無論操做數是何種類型的數值,老是捨去小數部分,返回比真正的商小的最接近的數字

>>> 1 // 2
0
>>> 1.0 // 2
0.0

②取餘

浮點型取餘按照如下規則:

x % y = x - x // y * y

例如

 

複數取餘相似浮點型,不一樣點在於商只取實數部分

③位操做符(僅適用於整型)

python整型支持標準位運算:取反(~);按位與(&);按位或(|);異或(^)以及左移(<<)和右移(>>)。位運算是把數字看做二進制來計算

A.取反運算

對一個二進制數按位取反,即0變1,1變0.

十進制數至關於-(num+1)

B.左移、右移

對一個數num左移x,至關於取 num * 2 ** x

右移相反,至關於取 num /  2 ** x

C.按位與/按位或

按照二進制補碼運算  按位與每位按照規則:1&1=1;1&0=0;0&0=0;0&1=0運算。

按位或每位按照規則:1|1=1;1|0=1;0|0=0;0|1=1

如:5的二進制表示是 101,6的二進制表示是110,則按位與是100,即十進制的4;按位或是111,即十進制的7

7的二進制表示是111,8的二進制表示是1000,則按位與是0000,即十進制的0;按位或是1111,即十進制的15

D.異或

按照二進制運算,對應的每位相異時結果爲1,相同時爲0

如9的二進制表示1001,10的二進制表示1010,則按位異或是0011,即十進制的3

11的二進制表示1011,12的二進制表示1100,按位異或是0111,即十進制的7

6.內建函數與工廠函數

(1)轉換工廠函數

int()、long()、float()、complex()函數用來將其餘數值類型轉換爲相應的數值類型,也能夠返回字符串表示的數值

int()、long()能夠接受第二個可選參數,用來將給定的實參轉換成相應進制

>>> int('12', 3)
5

注意  這裏int()若要給定第二個參數時,第一個參數12要以字符串的形式給出;且並非把12轉換爲3進制,而是把12看成3進制的數轉換成10進製表示。

complex()能夠接受兩個參數,第一個參數是複數的實部,第二個參數是複數的虛部,第二個參數默認爲0.

>>> int(1.23)
1
>>> long(123)
123L
>>> float(123)
123.0
>>> complex(123)
(123+0j)
>>> complex(123,456)
(123+456j)
>>> complex(1.23e-2,1.23e3)
(0.0123+1230j)

(2)功能函數

python有5個內建函數用於數值運算,包括abs()   coerce()   divmod()   pow()   round()

① abs()

abs()返回給定參數的絕對值。若參數是複數,則返回複數的模,即複數實部和虛部的平方和的正的平方根(math.sqrt(real^2+imag^2)).參數能夠是表達式。

>>> abs(-1)
1
>>> abs(1.1)
1.1
>>> abs(3 + 4j)
5.0
>>> abs(1.22 - 10.22)
9.0

②coerce()

coerce()是一個數據類型轉換函數,接受兩個參數,返回一個包含轉換類型後的兩個數值的元組,轉換的規則相似於不一樣類型數值參與運算時的轉換規則

>>> coerce(1,2)
(1,2)
>>>
>>> coerce(1.3,134L)
(1.3,134.0)
>>>
>>> coerce(1,12L)
(1L,12L)
>>>
>>> (1j,12L)
(1j,(12+0j))

③divmod()

divmod()函數結合了除法和取餘,接受兩個參數,被除數和除數,返回一個包含商、餘數的元組。執行的除法都是地板除,餘數經過取餘運算獲得。

>>> divmod(11,3)
(3,2)
>>> divmod(3,11)
(0,3)
>>> divmod(3,1.5)
(2.0,0.0)
>>> divmod(1.5,3)
(0.0,1.5)
>>> divmod(2+34j,1+17j)
((2+0j),0j)                      #複數的商僅取實數部分的商

④pow()

pow()和雙星號**功能相似,都是指數運算。pow()接受三個參數,第一個參數是底數,第二個參數是指數,這兩個是必選的;pow()還能夠接受第三個可選參數,若是給出這個參數,pow()先進行指數運算,而後將運算結果和第三個參數進行取餘運算。這個特性主要用於密碼運算,且效率比pow(x,y) % z 好!

>>> pow(2,3)
8
>>> pow(3,2)
9
>>> pow(2,3,3)
2
>>> pow(1+2j,4)
(-7-24j)

⑤round()

內建函數round()用來對浮點型進行四捨五入。接受兩個參數第一個是要進行四捨五入的浮點型,第二個可選參數告訴round()函數將結果精確到小數點後指定位數。不指定第二個參數,則返回與第一個參數最接近的整型,即保留小數點後0位(仍然是浮點型)

>>> round(3)
3.0
>>> round(3.45)
3.0
>>> round(3.4999)
3.0
>>> round(3.499999,1)
3.5
>>> round(-3.5)
-4.0
>>> round(-3.4)
-3.0

⑥int()   round()    math.floor()區別

函數int()直接截去小數部分,返回值是整型

函數math.floor()獲得最接近原數但小於原數的整型,返回值是浮點型

函數round()按四捨五入的規則進行取整,獲得最接近原數的整型,返回值是浮點型

(3)僅用於整型的函數

Python提供僅適用於整型的內建函數,能夠分爲兩類:一類用於進制轉換;一類用於ASCII轉換

①進制轉換函數

python內建函數oct()接受一個任意進制的整型對象,返回相應的八進制(以0開頭)的字符串對象

內建函數hex()接受一個任意進制的整型對象,返回相應的十六進制(以0X開頭)的字符串對象

>>> oct(25)
'031'
>>> oct(31)
'037'
>>> hex(255)
'0xff'
>>> hex(192)
'0xc0'

②ASCII轉換函數

python內建函數chr()接受一個單字節整型值,返回一個字符串,字符串值爲對應的字符

內建函數ord()則相反,接受一個字符,返回其對應的整型值

>>> chr(65)
'A'
>>> chr(97)
'a'
>>> chr(48)
'0'
>>>
>>> ord('a')
97
>>> ord('A')
65
>>> ord('0')
48

③全家福:

7.其餘數字類型

(1)布爾型

幾條性質:

①布爾值事實上是整型的子類,True對應整型1,False對應整型0

②所以的python對象都有一個內建的True或False值。下列對象的布爾值是False:

None;
False (布爾類型);

全部的值爲零的數;

0 (整型);

0.0(浮點型);

0L (長整型);

0.0+0.0j(複數);

"" (空字符串);

[] (空列表);

() (空元組);

{} (空字典);

值不是上面列出來的任何值的對象的布爾值都是 True,例如 non-empty、 non-zero 等等。 用戶建立的類實例若是定義了 nonzero(__nonzero__())或 length(__len__())且值爲 0,那麼它們的布爾值就是 False。

>>> bool(1)
True
>>> bool(True)
True
>>> bool(0)
False
>>> bool("0")
True
>>> bool(0.0)
False
>>> bool(0L)
False
>>> bool([])
False

8.相關模塊

①python關於數值的常見模塊如圖

②關於random的介紹

例:

>>> import random

>>> random.randint(12,23)
16
>>> random.randrange(12,23)
18
>>> random.uniform(12,23)
13.5080332618
>>> random.random()
0.6490402518091863
>>> random.choice([12,15,16,18,19,20])
20
>>> random.choice([12,15,16,18,19,20])
16
>>> random.choice([12,15,16,18,19,20])
19
相關文章
相關標籤/搜索