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

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

文章瀏覽次數 938

特種兵

特種兵圖像(預設)

2020-06-14 12:28:41

From:1.161.156.1

第一章 程式之路

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

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

1-1 python 程式語言

python 是一種易學的高階程式語言,但電腦實際上只能直接讀懂低階語言,所以高階語言的缺點,就是需要透過編譯器或直譯器,將一行行的程式翻譯成低階語言並讓電腦執行。

但拜現在的電腦配備精良所賜,高階語言效率較差的事實,已越來越不明顯,相對的優勢更是顯而易見,例如高階語言的程式語法偏向人類所使用的自然語言。

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

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

想執行 python 程式,通常至少有三種方式。本次初級課程中,會先介紹方法一與二兩種:

  1. 交互式:在 python 命令列/主控臺(終端機)直接輸入程式並執行程式碼。
    可快速得到程式執行的結果,通常用於小型簡單的測試,非常有用。
  2. 腳本(命令)式:開啟一個新檔案輸入程式碼,並將檔案副檔名存成 .py ,再透過直譯器來執行 python 程式。
    可撰寫完整的程式,方便隨時調整參數或語句的增加與改動,通常在開發完整的程式時會選擇使用檔案來編寫程式。
  3. 使用 ide 撰寫好程式後,直接直譯出結果。
    需要挑一下無障礙程度較高的 ide 軟體,否則全盲視障者用起來反而造成障礙,建議可以試看看 vs code,它支援中文、免費且有 NVDA 的附加元件可以搭配。 ide 一開始可能需要熟悉一下介面,如果不考慮無障礙的問題,其實有很多 ide 可供選擇,就看看自己用哪一套比較順手了。

1-2 什麼是程式

程式就是由一系列的指令所構成的運算或敘述,是用來解決一些問題的工具。通常分成五大部分,分別為:

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

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

1-3 程式錯誤

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

修正錯誤稱為 除錯(debug)。通常錯誤分成三種,分別是:

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

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

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

你拿過去給他
你拿去過給他

程式有它的邏輯和規則,必須在它的遊戲規則下完成想要的動作;反過來就是利用它的規則,來達到想要的目的。

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

執行錯誤

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

這種錯誤會在程式編寫不良造成執行時記憶體不足時出現,或者執行時因硬碟空間不足而開啟檔案失敗等。

語意錯誤

它不容易被發現,因為並不會產生任何錯誤訊息。實際上,語意錯誤完全是我們自己造成的,程式只是按照我們所說的去做而已。但是我們心裡所想的,與給程式的可能有差異,這樣的錯誤需要跟蹤程式的執行過程,才能夠發現問題的所在。

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

a = 3
a > 3 # 條件不成立
a < 3 # 條件不成立

1-4 經驗與除錯

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

除錯就是當程式發生故障或瑕疵時,我們去排除它的過程,過程有時會很痛苦,但其實很有趣的。除錯是一個很花時間但也最具挑戰性的工作,可以順利除錯,表示你的功力又更上一層樓,且學到了寶貴的經驗。

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

1-5 第一支程式

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

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

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

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

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

因此,上面的程式就是呼叫名字為 print 的函數,它的功能是把我們指定的文字顯示在畫面上,所以我們指定了 你好 讓它印在畫面上。

如果還是不知道函數是什麼、可以做什麼,那也沒關係,先知道這個 print 指令可以幫我們把文字秀在畫面上即可。

除錯

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

事實上,錯誤的發生來自於我們自己,所以我們沒有理由對電腦生氣。你應該要以管理者的角度來思考,你的電腦就是一個優秀的員工,他可以發現你給出的任務有哪些地方出錯,事實上你還應該感謝他的細心。

不過,對自己生氣也沒意義,生氣不會解決問題,也不會讓程式變好,而且這段程式還是自己寫出來的。你唯一要做的,是面對問題,然後去解決它。

先比對一下正確的語法,是不是少寫了一個 引號 '',引號是成雙成對的;是不是遺漏了 括號 (),括號也是成雙成對的。或者,是不是把 print 單字拼錯了?母語不是英語的我們,更容易發生拼寫錯誤的狀況。

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

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

如上所述,當語法錯誤發生時,我們應該可以看到錯誤訊息,記下這些錯誤訊息讓我們累積除錯經驗,未來加快除錯所需的時間。雖然錯誤訊息是英文的,但看習慣就會知道大概是什麼問題,可以翻譯它,而且還有發生錯誤的行號參考。

一個優秀的程式設計員,也應該是一個除錯高手才對。除錯就是一個真實面對自己的過程,就像是在反省自己。

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

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

動動腦

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

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

練習

第1題

下面有一些簡單的應用題,試試看在 python 命令列直接輸入算式,把它當成計算機來使用。

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

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

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

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

請試著在 python 命令列列出上面兩個題目的式子,並得到正確的運算結果。

第2題

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

存檔後必須使用 python 直譯器來執行你寫的程式,看看有沒有正確執行。

  1. 按 win+r 輸入 cmd 按確定,進入 windows 命令列
  2. 使用 cd 指令將路徑移到 1-1.py 的所在資料夾下,例如檔案放在 D 槽的 python 資料夾下,就輸入
    • d: 按 enter
    • cd /python 按 enter
  3. 輸入 python 1-1.py 按 enter 來讓 python 執行你的程式,查看執行結果。若發生錯誤,請試著按照本章的除錯教學來進行除錯。

參考資料

一小時 python 之路

影片

第一章 程式之路

最後更新:2021-10-08 22:42:21

From: 111.249.165.250

By: 特種兵