文字題

文字題

簡單

說明

解析並計算簡單的數學應用題,並以整數回傳答案。

疊代 0:數字

沒有運算的題目,計算結果就是題目給的數字。

What is 5?

計算結果是 5。

疊代 1:加法

把兩個數字相加。

What is 5 plus 13?

計算結果是 18。

要能處理大數和負數。

疊代 2:減法、乘法和除法

現在,來進行其他三個運算。

What is 7 minus 5?

2

What is 6 multiplied by 4?

24

What is 25 divided by 5?

5

疊代 3:多個運算

依序處理一連串的運算。

由於這些是口語敘述的應用題,請由左到右計算運算式,忽略一般慣用的運算順序。

What is 5 plus 13 plus 6?

24

What is 3 plus 2 multiplied by 3?

15(也就是說,不是 9)

疊代 4:錯誤

解析器應該要拒絕:

  • 不支援的運算(「What is 52 cubed?」)
  • 非數學問題(「Who is the President of the United States」)
  • 語法無效的應用題(「What is 1 plus plus 2?」)

例外訊息

有時候,你需要引發例外。這麼做時,一定要附上有意義的錯誤訊息,指出錯誤的來源。這會讓你的程式碼更容易閱讀,也對除錯大有幫助。如果你已經知道錯誤來源會是某個特定的類型,可以選擇引發其中一種內建錯誤類型,但同樣要附上有意義的訊息。

這個練習要求你使用 raise 敘述,在傳給 answer() 的問題格式錯誤或無效,或含有未知運算時「拋出」ValueError。只有當你同時 raise 這個 exception 並附上訊息,測試才會通過。 請注意:每個情境所需的訊息都不相同,即使引發的是同一個_錯誤類型_。請仔細檢查測試。

若要以訊息引發 ValueError,請把訊息寫成 exception 類型的引數:

# if the question contains an unknown operation.
raise ValueError("unknown operation")

# if the question is malformed or invalid.
raise ValueError("syntax error")

若要在特定的程式區塊中_處理_引發的錯誤,可以使用 try-except。try-except 區塊會「包住」可能導致錯誤的程式碼,把所有的例外對應到單一錯誤、多個錯誤,或處理這個問題的其他程式碼片段:

while len(equation) > 1:
        try:
           # The questionable/error-prone code goes here,in an indented block
           # It can contain statements, loops, if-else blocks, or other executable code.
           x_value, operation, y_value, *rest = equation
           ...
           ...

        except:
            # Code for what to do when an error gets thrown in the code above.
            # This could be one error, or more complicated logging, error checking and messaging.
            raise ValueError("syntax error")
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Python Exercism

準備好開始 文字題 了嗎?

註冊 Exercism,透過 17 個概念146 個練習 和真人引導來學習並精通 Python,全部免費。