當前位置:
首頁 > 最新 > 練習 16-18 Learn Python 3 The Hard Way

練習 16-18 Learn Python 3 The Hard Way

又要跟大家說對不起了,昨晚寫完學習筆記已經過了零點了,然後又困得不行,所以一直到今晚回來才開始排版推送~年底事情多,希望大家多多理解~好了,進入正題吧~

上節課我們學習了練習 13-15 關於參數、解包、變數、如何提示用戶輸入,以及如何閱讀文件等一些內容。沒有印象的童鞋最好先複習一下(練習 13-15 Learn Python 3 The Hard Way),再學習今天的內容。

今天的練習 16-18 我們將繼續學習讀寫文件、複製文件以及函數等一些內容。

練習 16. 讀寫文件

如果你做了上一節的附加練習,你應該看到了所有的命令(commands,modules,functions),我們可以把這些命令施加給文件。以下這幾個命令是需要我們記住的:

這些命令裡面有些需要參數,但是先不要在意這點,記住每一個命令的格式和用法即可。

接下來,讓我們用這些命令做一個小小的編輯器:

ex16.py

這個練習的代碼比前面多了很多,而且有大量字元,所以輸的時候一定要仔細,90% 的運行出錯都是因為我們輸錯或漏輸了某個字元或者符號,所以一定要認真,敲完之後檢查一遍。

你應該看到

事實上我們會看到兩樣東西,一個是我們新腳本的輸出結果:

練習 16 結果

另一個是我們創建的文本文件(比如本例中是 test.txt),你可以打開這個文件檢查一下對不對。

註:line 1-3 的內容你可以自由發揮,只要最後打開文本文件看到的內容跟你在命令行界面輸入的內容能對得上就行。

如果你在運行腳本之後選擇 還是回車的時候選擇了 ,程序就會中止,Windows 系統下會出現這樣的文字:

MacOS 我沒試過,但應該也是會終止。當然終止完你還是要重新運行一下然後選回車,讓後面的步驟運行完。

附加練習

如果你理解不了這個練習,回過頭去按照給每行加註釋的方法再過一遍,注釋能幫助你理解每一行的意思,至少讓你知道你不理解的地方在哪裡,然後動手去查找答案。

註:這個附加練習最難的應該就是第 3 題了,你可能會想到把 都放在 後面的圓括弧里,但是你不確定到底這些東西之間要不要加空格、逗號以及引號,在哪加,以及加多少。怎麼辦呢?最好的辦法就是一個一個試,這樣學習效果最好,印象最深,加油!

常見問題

對於 參數來說是必須的嗎?詳見附加練習 5。

到底是什麼意思?它真的只是一個有字元的字元串,來表示文件的一種模式。如果你用了 ,就代表你說「用 『write』 模式打開這個文件。此外還有 表示 read 模式, 表示增補模式,後面還可能加一些修飾符(modifiers)。(ai醬註: 是 命令的一種模式,這種模式只會寫,它會覆蓋現有的文件,如果文件不存在,它會自己創建。你也可以去網上了解一下 其他模式的用法和含義。)

我能對文件使用哪些修飾符?目前最重要的一個就是 ,你可以用 , 以及。這樣會讓文件以讀和寫的模式打開,取決於你用的是那個符號以及文件所在的位置等。

如果只輸入 是不是就用 (讀)模式打開?是的,那是 函數的默認值。

練習 17. 更多文件

練習 17 我們學習的是複製文件。代碼非常短,來吧。

ex17.py

我們在第二行調用了一個比較常用的命令 。它會基於一個字元串裡面的變數文件名來判斷,如果一個文件存在,它就會返回 ,不存在就會返回 。我們會在這本書的下半部分經常用到這個函數,現在不用過多深究。

註:使用 可以調出海量的免費代碼,這些是程序員已經寫過的代碼,你就不用重複造輪子了。有興趣的話可以了解一下 python 可以 import 哪些有趣的東西~

你會看到

我們還像以前一樣運行 ex17.py ,再加上兩個變數:一個是要複製的源文件,一個是要複製到的目標文件:

練習 17 結果

前面一部分是用命令行列印參數和瀏覽文本文件(應該有不少同學已經忘了 是什麼意思了吧?附錄的命令表要定期複習哦~),後面是運行腳本的結果。

附加練習

這個腳本真的很煩人。在複製之前其實沒必要問你,而且它列印了太多內容,試著通過刪掉一些特徵讓這個腳本更簡潔一些。

註:把腳本變成一行這個題很有意思,大家可以試試,歡迎在評論區展示自己的「一行」代碼~

常見問題

為什麼 要用引號?因為這是一個字元串。你已經用了一段時間字元串了,你得知道它的含義。

你不可能把那些代碼變成一行!那;取決於;你;如何;定義;一行;代碼。

我覺得這個練習很難,這正常嗎?是的,很正常。甚至到練習 36 的時候,或者學完這本書的時候,你可能還是會覺得很難。每個人的情況都不一樣,所以堅持學下去,堅持做練習,要有耐心。

函數是什麼作用?它能夠取字元串的長度,然後返回一個數字。你可以試著玩玩。

但我試著把這些代碼縮短的時候,我在關閉文件時遇到了錯誤。你可能用了 ,這意味著你不需要在之後再輸入 ,因為你已經到了腳本的最後。一旦那一行運行過之後,它就已經被 Python 關掉了。

我收到了一個這樣的錯誤。你忘了在字元串後面加引號了,再檢查一遍的代碼。

練習 18 名稱,變數,代碼,函數

接下來我們要給學習函數了。這可以說是編程裡面非常常用的東西了。不過也別怕,我們會從最簡單你的練習入手。

函數一般就是做這些事情:

我們可以通過在 Python 中用 來創建一個函數。下面的練習中我們會創建 4 個不同的函數:

ex18.py

拆解一下:

不是創建一個函數最簡單的方法。在 python 裡面,我們可以跳過整個解包參數的過程,只用我們需要的 裡面的名字即可,這也正是 所做的事情。

之後我們用一個參數創建了 這個函數。

最後我們創建了一個沒有參數的函數 。

如果你現在不太明白,別灰心,我們會再做幾個跟函數相關的練習,慢慢你就會明白的。

你會看到

如果你運行了 ,你會看到:

練習 18 結果

我們使用函數的方式就像使用 exists、open 這些「命令」一樣。那麼命令和函數到底什麼區別呢?答案是:沒有區別!!!老肖一直在給我們賣關子,所以「命令」就是「函數」,記住了。

附加練習

創建一個如下的函數 checklist (核查表)用於後面的練習。把這些內容寫在索引卡上並牢記在心,一直保留到你完成所有剩餘練習的時候或者當你感覺你不再需要這些索引卡的時候:

當你運行(使用或者調用)一個函數時,檢查以下事項:

注意:我們在練習中說的「運行」(run)、「調用」(call)、「使用」(use)都是一個意思。

常見問題

函數名稱有哪些要求?跟變數名一樣,任何不以數字開頭的字母、數字、下劃線組合都可以。

中的 是什麼作用?這是告訴 Python 取所有的參數給函數,然後把它們放在 里放成一列,很像你之前學的 ,只不過這個是為函數設置的。這種不常用,除非有特殊需要。

這部分好無聊好煩人啊。這就對了,這說明你已經開始一邊輸入代碼一邊思考它的作用了。如果想讓它不這麼無聊,按照我的要求一字不差地輸入進去,然後再故意打亂它們,看看你能不能修復好。

今天的練習整體有些難度,大家還是要多花些心思,如果有任何問題,歡迎在評論區、後台以及微信群留言討論~

好好學習|天天進步


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python 的精彩文章:

TAG:Python |