《HeadFirst Python》第一章學習筆記

對於Python初學者來說,捨得強烈推薦從《HeadFirst Python》開始讀起,這本書當真做到了深入淺出,HeadFirst系列,本身亦是品質的保證。這本書捨得已在《Python起步:寫給零編程基礎的童鞋》一文中提供了下載。爲了方便大家的學習,捨得特意製作了Jupyter Notebook格式的筆記,文章末尾捨得提供了筆記的下載地址。

讀《HeadFirst Python》的同時,最緊要的是及時做練習,你甚至可以在快速瀏覽過一章後,便拿起練習來做。

做練習的時候,切記,不要用書中建議的Python自帶的IDLE。作爲過來人,捨得的建議是使用Jupyter Notobook。具體的安裝方法捨得已在Python起步:寫給零編程基礎的童鞋》中講得很清楚了,每次你要練習的時候,運行jupyter-notebook.exe,便可以在程序打開的瀏覽器頁面中進行代碼輸入了。Jupyter Notobook與Python自帶的IDLE相比,有着巨大的優勢:

  • 增強版的代碼自動補全:輸入代碼過程中,可嘗試按Tab鍵,程序會提示相應的代碼;
  • 每次錄入的代碼程序會自動替你保存下來,這就相當於你自己的學習筆記,你可以在代碼的前或後加入註釋,註釋前面用一個“#”+一個空格(空格可以不加,但捨得建議從一開始便養成良好的寫代碼習慣,#後帶空格是Python代碼規範-PEP8的要求)就可以了;
  • Notebook給你保存的筆記,你可以隨時打開,點RUN按鈕(或用Alt+Enter快捷鍵)便可以運行選擇中的某一段代碼,這是Python自帶的IDLE根本無法做到的事情;
  • 在Notebook中你可以極爲方便地輸入多行代碼,而Python自帶的IDLE在這方面有極大的限制;
  • 對於顏控來說,Notebook的代碼着色看起來更加舒服一些;
  • ……

捨得會將書中每一章中提到的大部分練習,收錄到筆記中,你可以在看完一章後,拿捨得給你的筆記,在Jupyter Notebook中進行練習。當然你也可以在看到書出給出一段代碼時,立刻在Jupyter Notobook中輸入並運行。

捨得提供的筆記是ipynb格式(ipy是指ipython, Notebook是用ipython來實現的。而nb則是notebook的縮寫),當你下載了筆記之後,請將其放到“你的python安裝文件夾(默認是c:\python34)\Scripts”文件夾下,然後刷新一下瀏覽器中Jupyter Notebook的首頁,便可以看到這個筆記,點擊該筆記,就可以瀏覽了。

SNAG-0140

如果你在Jupyter Notebook首頁中已經點擊過“New->Python 3”, 那麼你可以使用菜單”File->Open“回到首頁選擇捨得提供的筆記。

SNAG-0143

下面捨得開始講解第一章的要點。

文中”[in]:“後面的內容,表示我們在Jupyter Notebook中輸入的代碼和註釋,內容中以”# “開頭的,是捨得的註釋。

[out]:“後面的內容,則是代碼執行後的輸出結果。

捨得在註釋中,標明瞭該段代碼的頁碼,方便你對照書本進行練習。書中有些內容的講解比舍得更詳細。

捨得對部分代碼進行了改寫,但不影響代碼的最終效果。


[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

本文版權歸捨得學苑所有,歡迎轉載,轉載請註明作者和出處。謝謝!
作者:捨得
首發:捨得新浪博客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章