讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 7.1 測試,測試 >

7.1 測試,測試

程序需要能夠根據輸入做不同的事情。下面給出幾個例子:

  • 如果 Tim 給出的答案正確,就為他加 1 分;

  • 如果 Jane 擊中外星人,就發出爆炸聲;

  • 如果文件沒找到,就顯示錯誤消息。

決策時,程序要做出檢查(完成一個測試),查看某個條件是否為真。在上面的第一個例子中,這個條件就是「答案正確」。

Python 完成測試的方法很有限,而且每個測試只有兩個可能的答案:真(true)或者假(false)。

Python 在測試時可能會問下面這些問題。

  • 這兩個東西相等嗎?

  • 其中一個是不是小於另一個?

  • 其中一個是不是大於另一個?

不過等一下,剛才說過第一個例子的測試條件是「答案正確」,但是這不屬於我們能做的測試,至少不能直接測試。這說明,我們需要用一種 Python 能理解的方式來描述測試。

想要知道 Tim 的答案是否正確時,我們需要知道正確的答案是什麼,還要知道 Tim 的答案。可以寫成這種形式:

如果 Tim 的答案是正確的,這兩個變量就是相等的,所以條件(condition)為真(true)。如果他的答案不正確,這兩個變量就不相等,條件則為假(false)。

術語箱

完成測試並根據結果做出判斷稱為分支(branching)。程序根據測試的結果來決定走哪條路,或者沿哪個分支執行。

Python 使用關鍵字 if 來測試條件,如下:

術語箱

代碼塊(block)是一行或放在一起的多行代碼。它們都與程序的某個部分相關(比如一個 if 語句)。在 Python 中,通過將塊中的代碼行縮進來構成代碼塊。

if 行末尾的冒號告訴 Python 下面將是一個指令塊。這個塊包括從前面的 if 行以下直到下一個不縮進的代碼行之間的所有縮進代碼行。

術語箱

縮進(indenting)是指一個代碼行稍稍靠右一點。它不是從最左端開始,而是前面有一些空格,所以會從距左邊界幾個字符之後開始。

如果條件為真,就會完成之後代碼塊中的所有工作。在前面的小例子中,第 2 行和第 3 行構成了第 1 行中 if 的相應語句塊。

現在來討論縮進和代碼塊。