學習軌道
/
Python
Python
/
練習
/
迴文乘積
迴文乘積

迴文乘積

中等

說明

在給定的範圍中找出迴文乘積。

迴文數是指把數字反轉後仍然相同的數字。 例如,121是迴文數,但112不是。

給定一個數字範圍,找出該範圍內兩個數字相乘的乘積中,最大與最小的迴文。

你的解法應該回傳最大與最小的迴文,以及各自在該範圍內的因數。 如果最大或最小的迴文在該範圍內有多於一組因數,就回傳所有的因數對。

範例 1

給定範圍[1, 9](包含兩端)……

而這個範圍內所有可能的乘積如下: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 16, 18, 15, 21, 24, 27, 20, 28, 32, 36, 25, 30, 35, 40, 45, 42, 48, 54, 49, 56, 63, 64, 72, 81]

這些迴文乘積都是個位數(在這個例子中): [1, 2, 3, 4, 5, 6, 7, 8, 9]

最小的迴文乘積是1。 它的因數是(1, 1)。 最大的迴文乘積是9。 它的因數是(1, 9)和(3, 3)。

範例 2

給定範圍[10, 99](包含兩端)……

最小的迴文乘積是121。 它的因數是(11, 11)。 最大的迴文乘積是9009。 它的因數是(91, 99)。

關於 smallest 與 largest 實作的注意事項:

這兩個函式都必須接收兩個關鍵字引數:

  • max_factor:int
  • min_factor:int,預設 0

它們的回傳值必須是 tuple -- (value, factors),其中 value 是迴文本身,而 factors 是一個 iterable,內含這個迴文的兩個因數,順序不拘。

例外訊息

有時候,我們必須引發例外。這麼做時,你應該一律附上有意義的錯誤訊息,指出錯誤的來源。這能讓你的程式碼更容易閱讀,也對除錯有極大的幫助。如果你知道錯誤來源會是某個特定型態,可以選擇引發其中一種內建錯誤型態,但仍然應該附上有意義的訊息。

這個練習要求你在 largest() 或 smallest() 函式收到一對不在正確範圍內的因數時,使用 raise 敘述來「throw」一個 ValueError。唯有你同時 raise 這個 exception 並附上訊息,測試才會通過。

若要帶著訊息引發 ValueError,請把訊息寫成 exception 型態的引數:

# if the max_factor is less than the min_factor
raise ValueError("min must be <= max")
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Python Exercism

準備好開始 迴文乘積 了嗎?

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