第六章 ?有返回值的函數(shù)
1. 返回值:沒有返回值的函數(shù)返回None
2. 增量式開發(fā):增量式開發(fā)的目標萧朝,是通過每次只增加和測試少量代碼,來避免長時間的調(diào)試。該函數(shù)的最終版不會在運行時顯示任何東西,僅僅返回一個值。 我們之前寫的print語句在調(diào)試時是很有用的像寒,不過在函數(shù)能夠正確運行之后,你就該刪了它們瓜贾。 我們稱這樣的代碼為腳手架代碼(scaffolding)诺祸, 因為它對程序的構建很有用,但不是最終產(chǎn)品的一部分祭芦。
當你剛開始的時候序臂,最好每次只加入一兩行代碼。 隨著經(jīng)驗見長实束,你會發(fā)現(xiàn)自己可以編寫奥秆、調(diào)試更大的代碼塊了。 無論哪種方式咸灿,增量式開發(fā)都能節(jié)省你大量的調(diào)試時間构订。這種開發(fā)方式的關鍵是:
從一個能運行的程序開始,并且每次只增加少量改動避矢。無論你何時遇到錯誤悼瘾,都能夠清楚定位錯誤的源頭囊榜。
用臨時變量存儲中間值,這樣你就能顯示并檢查它們亥宿。
一旦程序正確運行卸勺,你要刪除一些腳手架代碼,或者將多條語句組成復合表達式烫扼,但是前提是不會影響程序的可讀性曙求。
3. 組合:從一個函數(shù)調(diào)用另一個函數(shù)
4. 布爾函數(shù):布爾函數(shù)通常被用于條件語句中
5. 監(jiān)護人、調(diào)試
第七章 迭代
1. while語句:在計算機程序中映企,重復也被稱為**迭代(iteration)**
2. break:有些時候循環(huán)執(zhí)行到一半你才知道循環(huán)該結束了悟狱。這種情況下,你可以使用break語句 來跳出循環(huán)堰氓。while循環(huán)的這種寫法很常見挤渐,因為你可以在循環(huán)的任何地方判斷條件 (而不只是在循環(huán)開始),而且你可以積極地表達終止條件(“當出現(xiàn)這個情況是終止”)双絮, 而不是消極地表示(“繼續(xù)運行直到出現(xiàn)這個情況”)浴麻。
第八章 字符串
1. 字符串是一個序列:由字符組成的序列
2. len
3. 使用for循環(huán)遍歷
4. 字符串切片
5. 字符串方法:.upper ? ?.find
6. in 運算符:是一個布爾運算符
第十章 列表
1. 列表是一個序列:[? ],一個列表在另一個列表中囤攀,稱為**嵌套(nested)列表**软免,即[...[..]..],嵌套的列表本身還是被看作一個單個元素
2. 列表是可變的:list[0]=333可以索引賦值
3. 遍歷列表:for...in list
4. 列表操作:+運算拼接多個列表抚岗;*運算以給定次數(shù)重復一個列表
5. 列表切片:list[1:2] ? list[:] ??
6. 列表方法:list.append()將元素添加到結尾;list1.extend(list2)將一個列表添加到目標列表中哪怔;list.sort()對列表中元素進行排列
7. 映射宣蔚、篩選和歸并:sum(list)求和(稱為“歸并”)
8. 剔除元素:list.pop(1)將list中索引為1的值從list中剔除,返回值是該剔除值认境;del list[1:2]直接刪除胚委;list.remove('b')在不知道'b'的索引的情況下,將該值從list中剔除叉信。
9. 列表和字符串:list = list(string)亩冬,list()函數(shù)將字符串分割成單獨的字符存入列表中;string.split(分隔符)按照分隔符將string變成列表硼身;'分隔符'.join(list)用分隔符將list組成字符串
10. 對象和值硅急、別名、列表參數(shù)(<阉臁营袜!注意理解!丑罪!)
粗心地使用列表(以及其他可變對象)會導致長時間的調(diào)試荚板。 下面列舉一些常見的陷阱以及避免它們的方法:
大多數(shù)的列表方法會對參數(shù)進行修改凤壁,然后返回None。這和字符串方法相反跪另,后者保留原始的字符串并返回一個新的字符串拧抖。
如果你習慣這樣寫字符串代碼:
word=word.strip()
那么你很可能會寫出下面的列表代碼:
t=t.sort()# 錯誤!
因為sort返回None免绿,所以你的下一個對t執(zhí)行的操作很可能會失敗唧席。
在使用list方法和操作符之前,你應該仔細閱讀文檔针姿,然后在交互模式下測試袱吆。
選擇一種寫法,堅持下去距淫。
列表的一個問題就是有太多方法可以做同樣的事情绞绒。 例如,要刪除列表中的一個元素榕暇,你可以使用pop蓬衡、remove、del甚至是切片賦值彤枢。
要添加一個元素狰晚,你可以使用append方法或者 + 運算符。假設t是一個列表缴啡,x是一個列表元素壁晒,以下這些寫法都是正確的:
t.append(x)t=t+[x]t+=[x]
而這些是錯誤的:
t.append([x])# 錯誤!t=t.append(x)# 錯誤业栅!t+[x]# 錯誤秒咐!t=t+x# 錯誤!
在交互模式下嘗試每一個例子碘裕,保證你明白它們做了什么携取。 注意只有最后一個會導致運行時錯誤;其他的都是合乎規(guī)范的的帮孔,但結果卻是錯的雷滋。
通過創(chuàng)建拷貝來避免別名.
如果你要使用類似sort這樣的方法來修改參數(shù), 但同時有要保留原列表文兢,你可以創(chuàng)建一個拷貝晤斩。
>>>t=[3,1,2]>>>t2=t[:]>>>t2.sort()>>>t[3, 1, 2]>>>t2[1, 2, 3]
在這個例子中,你還可以使用內(nèi)置函數(shù)sorted姆坚,它將返回一個新的已排序的列表尸昧,原列表將保持不變。
>>>t2=sorted(t)>>>t[3, 1, 2]>>>t2[1, 2, 3]