對於Python初學者來講,捨得強烈推薦從《HeadFirst Python》開始讀起,這本書當真作到了深刻淺出,HeadFirst系列,自己亦是品質的保證。這本書捨得已在《Python起步:寫給零編程基礎的童鞋》一文中提供了下載。爲了方便你們的學習,捨得特地製做了Jupyter Notebook格式的筆記,文章末尾捨得提供了筆記的下載地址。html
讀《HeadFirst Python》的同時,最緊要的是及時作練習,你甚至能夠在快速瀏覽過一章後,便拿起練習來作。python
作練習的時候,切記,不要用書中建議的Python自帶的IDLE。做爲過來人,捨得的建議是使用Jupyter Notobook。具體的安裝方法捨得已在《Python起步:寫給零編程基礎的童鞋》中講得很清楚了,每次你要練習的時候,運行jupyter-notebook.exe,即可以在程序打開的瀏覽器頁面中進行代碼輸入了。Jupyter Notobook與Python自帶的IDLE相比,有着巨大的優點:編程
捨得會將書中每一章中提到的大部分練習,收錄到筆記中,你能夠在看完一章後,拿捨得給你的筆記,在Jupyter Notebook中進行練習。固然你也能夠在看到書出給出一段代碼時,馬上在Jupyter Notobook中輸入並運行。瀏覽器
捨得提供的筆記是ipynb格式(ipy是指ipython, Notebook是用ipython來實現的。而nb則是notebook的縮寫),當你下載了筆記以後,請將其放到「你的python安裝文件夾(默認是c:\python34)\Scripts」文件夾下,而後刷新一下瀏覽器中Jupyter Notebook的首頁,即可以看到這個筆記,點擊該筆記,就能夠瀏覽了。app
若是你在Jupyter Notebook首頁中已經點擊過「New->Python 3」, 那麼你可使用菜單」File->Open「回到首頁選擇捨得提供的筆記。ide
下面捨得開始講解第一章的要點。函數
文中」[in]:「後面的內容,表示咱們在Jupyter Notebook中輸入的代碼和註釋,內容中以」# 「開頭的,是捨得的註釋。學習
」[out]:「後面的內容,則是代碼執行後的輸出結果。代碼規範
捨得在註釋中,標明瞭該段代碼的頁碼,方便你對照書本進行練習。書中有些內容的講解比舍得更詳細。htm
捨得對部分代碼進行了改寫,但不影響代碼的最終效果。
[in]:
# 熟愁一下打印命令.
# 第一章 p4
# 內容前面加一個#號表示註釋, python會自動忽略#號後面的內容
if 43 > 42:
print("Don't panic!")
[out]:
Don't panic!
[in]:
# 建立簡單的Python列表
# 第一章 p8
# 標識符:movies, 你給這個列表起的名字
# 操做符:=,把列表賦給標識符
# 列表格式:兩端用中括號;列表中每一項用逗號隔開;電影名稱兩邊加引號;
movies = ["The Holy Grail",
"The Life of Brian",
"The Meaning of Life"]
print(movies)
[out]:
['The Holy Grail', 'The Life of Brian', 'The Meaning of Life']
[in]:
# 用中括號記法訪問列表
# 第一章 p9
# 打印列表中第2個數據(第1個爲0)
print(movies[1])
[out]:
The Life of Brian
[in]:
# 列表深刻學習:len
# 第一章 p10
# len:獲取列表長度,即列表有幾個數據項
cast = ["Cleese", 'Plain', 'Jones',"Idle"]
print(cast)
print(len(cast))
print(cast[0]) # 0表示第一個數據項, 你能夠本身換不一樣的數字嘗試一下
[out]:
['Cleese', 'Plain', 'Jones', 'Idle']
4
Cleese
[in]:
# 列表深刻學習:append
# 第一章 p10
# append:在列表末尾增長一項數據
cast.append("Gillianm")
print(cast)
[out]:
['Cleese', 'Plain', 'Jones', 'Idle', 'Gillianm']
[in]:
# 列表深刻學習:pop
# 第一章 p10
# pop:從列表末尾刪除數據
cast.pop()
[out]:
'Gillianm'
[in]:
# 再打印一下,看看有何變化
print(cast)
[out]:
['Cleese', 'Plain', 'Jones', 'Idle']
[in]:
# 列表深刻學習:extend
# 第一章 p10
# extend:在列表末尾增長一個列表(兩個列表合併)
cast.extend(["Gillianm", "Chapman"])
print(cast)
[out]:
['Cleese', 'Plain', 'Jones', 'Idle', 'Gillianm', 'Chapman']
[in]:
# 列表深刻學習:remove
# 第一章 p10
# remove:在列表中找到並刪除一個特定的數據項
cast.remove("Chapman")
print(cast)
[out]:
['Cleese', 'Plain', 'Jones', 'Idle', 'Gillianm']
[in]:
# 列表深刻學習:insert
# 第一章 p10
# insert:在列表中特定的位置前增長一個數據項
cast.insert(0, "Chapman") # 0表示插入在最前面,你能夠試試其它的數字
print(cast)
[out]:
['Chapman', 'Cleese', 'Plain', 'Jones', 'Idle', 'Gillianm']
[in]:
# 習題
# 第一章 p13
# 把每部電影的出品年代加到列表中
# 象下面這樣: ['The Holy Grail', 1975, 1975, 1979,
# 'The Life of Brian', 1979, 'The Meaning of Life', 1983, 1983]
# 把數字放進列表的時候,數字不用加引號
movies.insert(1, 1975) # 第1個插入到第2個列表項前
movies.insert(3, 1979) # 第2個插入到第4個列表項前(好好想一想爲何用3)
movies.append(1983) # 最後一個追加到末尾就行
print(movies)
[out]:
['The Holy Grail', 1975, 'The Life of Brian', 1979, 'The Meaning of Life', 1983]
[in]:
# 列表: 迭代
# 第一章 p15
# 迭代: 用一個for循環,把列表中全部的項逐個打印出來
# for ... in ...表示取這個列表的每個數據
for i in movies: # 這裏的i隨便用哪一個(一個或多個)字母都行
print(i) # 只要兩個i保持一致.你能夠試試用不一樣的字母
[out]:
The Holy Grail
1975
The Life of Brian
1979
The Meaning of Life
1983
[in]:
# 列表: 迭代
# 第一章 p16
# 迭代: 用一個while循環,把列表中全部的項逐個打印出來
# 效果和for循環同樣
# while xx < xxx表示:只要xx < xxx,就一直執行下去, 直到這個條件不成立
count = 0
while count < len(movies): # 前面剛學過的len用法
print(movies[count]) # 前面剛學過的中括號記法
count += 1 # 和書本上的count = count + 1相同, 表示讓count自增1
[in]:
# 列表:在列表中儲存列表
# 第一章 p18
# 咱們用movies這個列表來記錄一部電影的數據. The Holy Grail這部電影全名叫
# 《Monty Python and the Holy Grail》(巨蟒與聖盃),1975年出品,兩個Terry是導演,
# 同時也參加了演出。影片時長爲91分鐘,Chapman是編劇(同時也是主演)。Michael這
# 一夥人既是編劇,亦是配角。這幫人真是玩嗨了,自編自導自演。
movies = ["The Holy Grail", 1975, "Terry Jones & Terry Gilliam", 91,
["Graham Chapman", ["Michael Palin", "John Clseese",
"Terry Gilliam", "Eric Idle", "Terry Jones"]]]
print(movies)
[out]:
['The Holy Grail', 1975, 'Terry Jones & Terry Gilliam', 91, ['Graham Chapman', ['Michael Palin', 'John Clseese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]]
[in]:
# 用for循環處理這個列表
for i in movies:
print(i)
[out]:
The Holy Grail
1975
Terry Jones & Terry Gilliam
91
['Graham Chapman', ['Michail Palin', 'John Clseese', 'Terry Gilliam', 'Eric Idle', 'Terry Jones']]
[in]:
# 列表:在列表中查找列表
# 第一章 p20
# isinstance: 判斷標識符的類型
names = ['Michael', 'Terry']
isinstance(names, list) # 判斷它是否是列表(list)類型
[out]:
True
[in]:
# 列表:在列表中查找列表
# 第一章 p20
# isinstance: 判斷標識符的類型
# 換個方式
num_names = len(names)
isinstance(num_names, list)
[out]:
False
[in]:
# 列表:在列表中查找列表
# 第一章 p21
# 習題: 把上面那個movies列表中的每個數據項都打印出來
# 用if ... else ...模式
# 結合isinstance
for i in movies:
if isinstance(i, list): # 先判斷i是否是列表
for j in i: # 是的話用for循環
if isinstance(j, list): # 還要再往下挖一層, 由於還有一個嵌套的列表
for k in j:
print(k)
else: # 每一對if...else...要對齊
print(j)
else: # 不是列表就直接打印
print(i)
# 若是再來一層嵌套的列表, 怎麼辦?
[out]:
The Holy Grail
1975
Terry Jones & Terry Gilliam
91
Graham Chapman
Michail Palin
John Clseese
Terry Gilliam
Eric Idle
Terry Jones
[in]:
# 函數
# 第一章 p30
# 使用函數能夠簡化剛纔寫的那段代碼, 再多來幾層列表咱也不怕啦!
# def關鍵字是define的縮寫,python看到def就知道這個是函數
def print_lol(the_list): # print_lol就是咱們定義的函數名,儘量把名字起得有意義一點
for i in the_list:
if isinstance(i, list):
print_lol(i) # 若是是列表, 那麼調用"本身"再次處理這個列表
else:
print(i)
[in]:
# 函數
# 第一章 p30
# 咱們來用print_lol這個函數來打印咱們的列表movies
print_lol(movies) # 看看,代碼是否是精簡了不少?
[out]:
The Holy Grail
1975
Terry Jones & Terry Gilliam
91
Graham Chapman
Michail Palin
John Clseese
Terry Gilliam
Eric Idle
Terry Jones
第一章完。
本文筆記下載地址:
連接:http://pan.baidu.com/s/1eR4iJoI 密碼:t72j