標籤: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. 邏輯操作符:
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》——筆記