讀《像電腦科學家一樣思考python》——筆記

來源:互聯網
上載者:User

標籤:idt   rom   logs   turn   計算   斐波那契   body   分支   最簡   

  第二章 變數、運算式和語句

1.  變數的基礎資料型別 (Elementary Data Type):python中有 整型、長整型、浮點型、字串型、複數形式5種。

2. 使用type( ),可以查看資料類型;如:type(2), type(‘xiaoming’) 等; type是一個函數;

3. 數值操作符:

    1) 加、減、乘、除、求模和乘方: + 、-、 *、/、% 和 **

    2)在python2中, 除法 / 使用的是捨去式除法(整數相除為整數), 即 2/3 結果為0; 在python3中,除數結果為浮點數類型,即 2/3 =0.6666666666666……, 並且使用一個新的操作符 // 表示捨去式除法 .

    3)操作順序: 乘方>乘除>加減

4. 字串可以使用的操作:

    1) 拼接: 使用 + , 如: ‘adfsa’+’adfds’ = ‘adfsaadfds’

    2) 重複操作: 使用 * , 如: ‘abc’*3 = ‘abcabcabc’

5. 注釋與換行:

# 我現在就是注釋狀態print ‘a‘#換行使用 \ 符號;print ‘asdfggk        sdsfsf‘

 

第三章: 函數調用

1. python中內建的類型轉換函式

int 把浮點數轉換為整數,它直接把小數部分捨去;   如 int(3.999) = 3; 又或  int(‘2’) = 2,它轉換了字串;

float函數將整數和字串轉換為浮點數: float(32)=32.0 或 float(‘3.14159’) = 3.14159

str函數將參數轉換為字串;

2, 定義無傳回值的函數,定義方法如下, def + 函數名+() + :, 函數體要有縮排: 

def hello():  print ‘hello,world!‘  print ‘hello, yinheyi‘

3.  python提供了兩種匯入模組的方式:

方法一: import 模組名, 如 import math , 這時如果訪問模組裡面的函數的時候,需要同時指明模組名與函數名,中間用 . 分隔;

方法二: from 模組名 imort 函數名,   這時,我們就可以直接使用這個函數名了,並且不需要指明模組名; 使用 from 模組名 import * 匯入模組的所有成員;

優缺點: 第二方式可以使代碼更簡潔,但是,不同模組的同名成員之間,可能發生衝突;

 

第四章: 案例研究:介面設計

1. 一個開發計劃:

1) 最開始寫一些小程式, 而不需要函數定義;

2) 一旦程式成功運行,將它封裝到一個函數中,並加以命名;

3) 泛化這個函數,添加合適的形參;

4) 可以使用重構來改善程式的機會, 例如, 如果發現程式中幾處地方有相似的代碼,可以老柴將它們抽取出來做一個合適的通用函數。

 

2. 文檔字串:

它的作用:在函數開頭用來解釋其的字串。

def hello():""" 這是一個文檔字串, 使用三個引號 可以允許字串跨行表示;我現在就跨行了啊;"""    print "hello,world!"

注意:編寫這類文檔是介面設計的重要部分. 一個設計良好的介面, 也應當很簡單就能解釋清楚;

 

第五章 條件與遞迴

1. 關係操作符:

不等於 !=
大於 >
小於 <
大於等於 >=
小於等於 <=

2. 邏輯操作符:

and
or
not

3. 布爾值與布林運算式:

運算式的值是真或假的運算式,就是布林運算式。 它的值為  True或False, 它們並不是字串。

4. 空語句: 在python中, 空語句使用 pass,記好!!!!

5. 條件判斷運算式:

1) 只有一個分支:

if x < y:     print ‘x is less than y‘

2)有兩個分支:

if x < y:    print ‘x is less than y‘else:    print ‘x is large than y‘

3) 多個分支:

if x < y:    print ‘x is less than y‘elif:    print ‘x is large than y‘else:    print ‘x is equal to y‘

6. 從鍵盤輸入:

python 2 提供了內建函數 raw_input 來從鍵盤擷取輸入, python 3 中這個函數改為了 input, 不過它們的用法相同。

a = raw_input(‘input your name:\n‘)print ‘hello ‘+a+‘!‘
#輸出為:input your name:yinheyihello yinheyi!

 

第六章:有傳回值的函數

1. 漸進式開發程式:

這個思想真的很好, 我們可以把一個大的函數一點點的增加開發出來 ,慢慢的一點點的調試。增加一些必要的腳手架代碼。 比如,在關鍵的位置列印一下變數的值等。一步步地來,保證每一步都是正確的, 這樣可以幚我們節省大量的調試時間。

2. 有傳回值的函數: 傳回值使用 return 返回。

def sum(a, b):    temp = a + b    return temp

3.  堅持信念:

在寫遞迴函式的時候, 我們可以使用一個方法: 堅持信念。 當我們遇到一個函數的調用的時候,不去跟蹤執行的流程,而是我們假定函數是正確工作的,能夠返回正確的結果 。如著名的斐波那契數列,它的程式可以寫作:

def fibonacci(n):    if n == 0:        return 0    elif n == 1:        return 1    else:    return fibonacci(n-1) + fibonacci(n-2)

4. 檢查類型:

python中內建了一個函數  isinstance 來檢查的實參的類型,  正確返回True, 否則返回 False

isinstance(12, int)True>>> isinstance(12.2, float)True>>> isinstance(‘hello‘, str)True

 

第七章 迭代

1. while 迴圈:

while n < 100:    print n    n = n - 1

2. for 迴圈:

for i in range(100):    print i    i = i + 1

 

第八章 字串序列

1. 字串是一個序列,它的下標是0 開始的;  使用python的內建函數len() 可以返回字串中的字元的個數:

>>> a = ‘hello‘>>> len(a)5>>> a[0]‘h‘

可以使用for 迴圈來遍曆一個字串內的字元:

a = ‘hello‘for char in a:    print char

2. 對字串可以切片:

操作符[n:m] 返回字元從第n個字元到第m個字元的部分, 包含第n 個字元,但是不包括第m個字元。

>>> fruit = ‘banana‘>>> fruit[1:3]‘an‘>>> fruit[:2]‘ba‘>>> fruit[3:]‘ana‘

3. 操作符 in

in 是一個布爾操作符, 操作於兩個字串上,如果第一個是第二個的子串,則返回True, 否則返回 False。

>>> ‘yin‘ in ‘yinheyi‘True

4. 字串中的元素是不可以改變的;

第十章: 列表

1. 列表是一個序列, 在列表中,它的值可以是任何類型, 列表中值稱為元素;列表可以嵌套在一個列表中。

建立一個列表最簡單的方法使用[ ], 如: [10, 20, 40, ‘xiaoming’]

2. 使用 [] 操作符來訪問列表,  列表中的元素是可以變化的;

3. 遍曆一個列表,照樣可以使用for()迴圈;

for i in array:    print i

4. 列表操作:

1) + 操作,可以用於拼接列表;

2) * 操作符,可以用於重複一個列表多次;

5. 從列表中刪除元素:

1)使用下標刪除:  pop 修改列表,返回被刪除的值,如果不提供下標,它會刪除並返回最後一個元素;

t = [‘a‘, ‘b‘, ‘c‘]print t.pop(1)#輸出:bprint t#輸出:[‘a‘, ‘c‘]

2) 使用下標刪除, 不返回刪除的值,使用del操作符:

>>> t =[1, 2, 3, 4]>>> del t[1]>>> print t[1, 3, 4]>>> t =[1, 2, 3, 4]>>> del t[1:3]>>> print t[1, 4]

3)如果知道刪除的元素,則可以使用remove:

>>> t = [‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘]>>> t.remove(‘d‘)>>> print t[‘a‘, ‘b‘, ‘c‘, ‘e‘]

6. 把字串轉化為列表:

1)轉換為單個單詞: 使用函數:list

>>> t = ‘asdfas‘>>> print list(t)[‘a‘, ‘s‘, ‘d‘, ‘f‘, ‘a‘, ‘s‘]
2)轉換為一個個的單詞, 使用字串的方法 split()

>>> t = ‘hello world yinheyi‘>>> print t.split()[‘hello‘, ‘world‘, ‘yinheyi‘]

7. 一個有趣的例子:

>>> a = ‘aaa‘>>> b = ‘aaa‘>>> a is bTrue>>> a = [‘a‘, ‘b‘, ‘c‘]>>> b = [‘a‘, ‘b‘, ‘c‘]>>> a is bFalse

為什麼會這樣子? 也沒有什麼意思吧。。字串是同一個對像, 而列表不是同一個對象,其實也很容易理解, 字串不可以更改,而列表是可以更改的;

8. 很重要:別名

當我們使用賦值 b =a 時, 這兩個變數都會引用同一個對象,改變其中一個,必然會影響另一個,這個與C語言不同,因為C語言中,它們是兩個不同的對象;例子如下:

>>> a = [111, 222, 333]>>> b = a>>> b[0] = 444>>> print a[444, 222, 333]

9. 列表參數:

當我們將一個列表作為參數傳入到函數中時, 函數會得到列表的一個引用。 所以,在函數中修改了列表的話,對函數外也有影響;

 

這一章特別注意: 對於列表進行賦值,是得到了原來列表的一個引用, 是引用啊。要特別曲分修改列表還是建立了一個列表;

 

第十一章: 字典

讀《像電腦科學家一樣思考python》——筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.