[python] [VI coding] 第一章 程式之路 - 教學區

[python] [VI coding] 第一章 程式之路

特種兵

特種兵圖像(預設)

2020-06-14 12:28:41

From:1.161.156.1

第一章 程式之路

希望你可以像計算機人員一樣思考問題,透過這樣的訓練,讓你擁有解決問題的能力。

依據不同的操作習慣與需求,每個人在使用電腦時可能會遇到不同的問題,而我們相信自己才是最能解決自己的問題的那個人。

1-1 python 程式語言

python 是一種易學的高階程式語言,但電腦實際上只能直接讀懂低階語言。

所以高階語言的缺點就是需要透過編譯器或直譯器將一行行的程式翻譯成低階語言並讓電腦執行。

但拜現在的電腦配備精良所賜,高階語言效率較差的事實在現今已越來越不那麼明顯。

相對的優勢更是顯而易見。例如高階語言的程式語法偏向人類所使用的自然語言,

因此對於人類學習程式語言而言,選擇高階語言是較容易可以被接受並學習的。

  1. 編譯器是將寫好的程式逐行讀完並編譯成執行檔供使用者執行。
  2. 直譯程式是直接透過直譯器邊讀取程式邊執行的方式解讀程式,python 屬於直譯語言。

想執行 python 程式通常有兩種方式:

  1. 在 python 命令列(終端機)直接輸入程式並執行程式碼。
  2. 開啟一個新檔案輸入程式碼並將檔案副檔名存成 .py 再透過直譯器來執行 python 程式。

方式一讓你快速地得到程式執行的結果,通常用於小型簡單的測試非常有用。

方式二讓你撰寫完整的程式,方便隨時調整參數或語句的增加與改動,通常在開發完整的程式時會選擇使用檔案來編寫程式。

1-2 什麼是程式

程式就是由一系列的指令所構成的運算,用來解決一些問題的工具。

通常分成五大部分,分別為:

  1. 輸入
  2. 輸出
  3. 運算
  4. 判斷
  5. 反覆執行

因此寫程式就是在把任務由大而小的一個過程,透過這樣的方式組合成程式碼來解決我們的問題。

1-3 程式錯誤

每個程式設計師在撰寫程式的過程中一定會犯錯,就像我們也會在生活中做錯事或講錯話一樣,這並不可恥。

重點是需要把錯誤修正,修正錯誤就稱為 除錯(debug)。通常錯誤分成三種,分別是:

  1. 語法錯誤
  2. 執行錯誤
  3. 語譯錯誤
語法錯誤

通常這是因為不合乎 python 的語法結構或架構,少打、多打或打錯關鍵字等,它會產生錯誤訊息。

在現實生活中,人類在講話時,利用過往經驗與推測通常還是可以看懂或聽懂語法錯誤的狀況,但編譯器或直譯器沒有那麼靈活,

你必須在它的遊戲規則下完成你想要的動作。

在開始學習一門程式語言的初步階段,由於不熟悉,你一定會經常發生語法錯誤,但通常這樣的錯誤隨著經驗的累積會慢慢減少。

執行錯誤

它是在程式執行階段時發生的錯誤,通常稱為 異常,在一開始編程的過程中,我們比較不會遇到這個問題。

這種錯誤像是程式編寫不良造成執行時記憶體的不足而產生錯誤,或者執行時因硬碟空間不足而開檔失敗等。

語意錯誤

它不容易被發現,因為它並不會產生任何錯誤訊息,實際上語意錯誤完全是我們自己造成的,程式只是按照我們所說的去做而已,

但是我們心裡所想的與給程式的可能是有差異的,這樣的錯誤需要跟蹤程式的執行過程才能夠發現問題的所在。

例如你希望迴圈跑3圈,但認知錯誤或計算錯誤的情況下讓程式多跑一圈,這樣就可能發生未預期的錯誤。

1-4 經驗與除錯

除錯工作在程式開發中占有很重要的地位,由於撰寫程式難免出錯,想讓程式正常的運行就必須除錯。

除錯就是當程式發生故障或瑕疵時,我們去排除它的過程,其實它很有趣,雖然有時會很痛苦。

除錯是一個很花時間但也最具挑戰性的工作,可以順利除錯表示你的功力又更上一層樓且學取了保貴的經驗,

在除錯的過程中,你也許必須調整你的程式碼,重新架構邏輯以符合你本來的需求,這些過程都是成為工程師必經的道路與訓練。

1-5 第一支程式

依照許多程式語言的慣例,通常第一支程式就是在畫面中印出 你好,像這樣:

範例 1-1
print('你好')

print() 是一個 函數(function),print 是函數的名稱,而引號內的字是我們想顯示在畫面上的文字,它稱為 字串(string),

引號實際上不會出現在畫面的結果裡,那算是語法的一部分。

對 python 來說,使用單引號 ' 或雙引號 " 都是一樣的,重點在於前後成對即可。

除錯

如果你剛剛沒有印出 你好 這兩個字,那你馬上就進入了除錯狀態,當程式執行結果不如預期時可能讓人沮喪與帶來負面情緒,

你應該從一個經理要管理一個很優秀的員工角度來除錯,事實上錯誤的發生來自於我們自己,所以我們沒有理由對電腦生氣。

你的電腦就是一個優秀的員工,他可以發現你給出的任務有哪些地方出錯,事實上你還應該感謝他。

對自己生氣也沒意義,生氣不會解決問題,也不會讓程式變好。你唯一要做的就是面對問題然後去解決它。

比對一下正確的語法,是不是少寫了一個 引號 '',引號是成雙成對的,是不是遺漏了 括號 (),括號也是成雙成對的。

是不是把 print 單字拼錯了,特別母語不是英語的我們,更容易發生拼寫錯誤的狀況。

之後的每一章都會有這個除錯的主題,如果你順利印出你好,那非常恭喜,因為你完成了第一支 python 程式。

現在你可以故意犯錯,例如少打括號或多打引號,看看會發生什麼事,

如上所述,當語法錯誤發生時,我們應該可以看到錯誤訊息,

這些錯誤訊息讓我們認識當以後不小心犯錯時,你曾經看過這些錯誤訊息,他們加速你除錯的時間,增進你除錯的經驗,

雖然錯誤訊息是英文的,但看習慣就會知道大概是什麼問題,至少我們可以翻譯它,而且還有發生錯誤的行號參考。

我認為一個優秀的程式設計員也應該是一個除錯高手才對。

我們要求自己成為一個當發生錯誤時能夠花時間去解決問題的計算機人員,因為想要不犯錯,必須累積很多經驗才有可能達成。

就讓我們腳踏實地,一步步的走下去吧。

動動腦

如果想要在你好前後都印出引號的話,可以怎麼做?

print('"你好"')
print("'你好'")
print('\'你好\'')

練習

第1題

在 python 命令列直接輸入算式,就當作它是一臺計算機。

如果忘記如何進入 python 命令列,請參考第零章。

  • + 是加號
  • - 是減號
  • * 是乘號
  • / 是除號

(1) 你現在有 100 元,一支鉛筆 10 塊錢,買了 10 支還剩多少錢?

(2) 假設吃一塊蛋糕會胖 100 公克,跑 100 公尺可以降 50 公克,所以吃了兩塊蛋糕需要跑多少公尺才會降回原來的體重。

請試著在 python 命令列列出式子並得到正確的運算結果。

第2題

修改剛才的 1-5 第一支程式 範例 1-1, 改成在畫面上印出 我很好 這三個字,輸出不含引號,並將程式檔名存成 1-1.py,

存檔後記得按 win+r 輸入 cmd 按確定進入 windows 命令列,使用 cd 指令將路徑移到 1-1.py 的所在資料夾下,

輸入 python 1-1.py 執行來查看執行結果,若有錯誤,請試著按照本章的除錯章節來除錯。

參考資料

一小時 python 之路

最後更新:2020-06-26 07:22:43

From: 1.161.151.18

By: 特種兵