練習 1 - 第一個程序 - Learn Python 3 The Hard Way
練習 1. 第一個程序
警告!如果你跳過了練習 0,那你就沒有按照這本書的正確學習方式來。另外,也不要使用 IDLE 或者 IDE。如果你跳過了練習 0,拐回去重新學習。
你可能已經花費了大量時間在練習 0 上,學習如何安裝一個文本編輯器,運行編輯器以及 Terminal,並且學習如何操作它們。如果你還沒有做這些,就不要繼續,否則你會後悔的。這種練習前的警告我再說最後一次:不要擅自跳過練習自己往前學。
把下面的本文輸入到一個名為 ex1.py
單個文件中,python 文件一般以 .py
為後綴。
ex1.py
1 print("Hello World!")2 print("Hello Again")3 print("I like typing this.")4 print("This is fun.")5 print(Yay! Printing.)6 print("Id much rather you not.")7 print(I "said" do not touch this.)
你的 Atom 文本編輯器應該看起來像這樣:
如果你的編輯器看起來不完全一樣也不用擔心,只要大體一致就行。
當你敲這個文件時,你得明白:
- 左邊這些數字不是我敲上去的,它印在書上是為了講解的時候方便說明。比如「看第 5 行...」之類,所以不要把行數敲進 Python 腳本里。
- 我輸出的結果跟我在練習 1 的
ex1.py
中讓你們輸入的內容是一模一樣的,而不是大致相同。所以每一個字元你都要嚴格按照我的要求來輸入,當然顏色無所謂。
在終端這樣輸入就可以運行你的 Python 文件:
python3.6 ex1.py
如果你都做對了,你就會看到和我一樣的結果,如果沒有,你肯定是哪裡出錯了。不,相信我,不是電腦的問題。
你應該看到
在 MacOS 的 Terminal 上你應該看到這樣的結果:
在 Windows 的 Powershell 上你應該看到這樣的結果:
你可能會在 python3.6 命令行前面看到不同的名字,這不重要,重要的是你輸入的命令要輸出跟我一樣的結果。
如果你出錯了你可能會看到這個:
$ python3.6 python/ex1.pyFile "python/ex1.py" , line 3 print (" I like typing this. ^SyntaxError : EOL while scanning string literal
能讀懂這些錯誤信息很重要,因為你接下來可能會出現很多這種錯誤,我也是。讓我們一行一行來看。
- 我們在 Terminal 運行
ex1.py
腳本。 - Python 告訴我們
ex1.py
文件的第三行出錯了。 - 它把第三行的代碼列印出來以便我們查看。
- 然後它放了一個
^
(插入符號)來指出哪裡出了問題。注意到那個缺失的"
了嗎? - 最後,它輸出「SyntaxError」,並告訴我們可能的錯誤信息。通常這些錯誤信息都比較隱晦,但是如果你用搜索引擎搜索以下,你就會發現別人也遇到過這樣的錯誤,然後你很可能就會找到問題的解決辦法。
課後練習
這個課後練習包括一些你應該嘗試去做的東西,如果你不會,可以先跳過,隨後再拐回來做。
對於這個練習,試試以下操作:
- 讓你的腳本再列印出一行。
- 讓你的腳本只列印一行。
- 在任一行的開頭放一個
#
,看看會發生什麼?試著弄明白這個符號的作用。
從現在開始,我不會解釋每個練習都是如何工作的,除非遇到特殊情況。
常見問題
以下是實際學習本節練習過程中學生們經常會問到的一些問題:
我能用 IDLE 嗎?不,你應該用 Terminal 或者 Powershell。如果你不知道怎麼用,就去學習附錄 A 的命令行速成教程。
我怎麼才能像你一樣編輯代碼時有顏色?先把你的文件另存為 .py
,比如 ex1.py
。然後你在輸入的時候就會有顏色了。
我在運行 ex1.py
時遇到了 SyntaxError:invalid syntax
提示。你很可能是已經運行了 Python,然後又輸了一次 python
。關閉 Terminal,重新打開,然後只輸入 python3.6 ex1.py
。
我遇到了 cant open ex1.py: [Errno 2] No such file or directory.
(「無法打開『ex1.py』:[錯誤號 2] 沒有該文件或目錄」)。你需要和你創建的文件在同一個目錄(文件夾)下。你要先使用 cd
命令切換到了那個目錄下。比如,如果你把你的文件保存在 lpthw/ex1.py
,那你就應該在運行 python3.6 ex1.py
之前先用 cd lpthw/
切換到 lpthw/
目錄下。如果這段你看不懂,去學附錄 A 的命令行速成教程。
我的文件不運行,我只是返回了提示符,沒有任何輸出。 你很可能以為我讓你輸入 print("Hello World!")
只是讓你輸 "Hello World!"
。並不是,你要完整地、一字不差地把代碼敲出來。
推薦閱讀: