雨滴

雨滴

簡單

簡介

雨滴是 FizzBuzz 挑戰稍微複雜一點的版本,也是經典的面試題目喔。

說明

你的任務是把一個數字轉換成對應的雨滴聲。

如果給定的數字:

  • 可以被 3 整除,就在結果中加上 "Pling"。
  • 可以被 5 整除,就在結果中加上 "Plang"。
  • 可以被 7 整除,就在結果中加上 "Plong"。
  • 不能被 3、5 或 7 整除,結果就應該是該數字轉成的字串。

範例

  • 28 可以被 7 整除,但不能被 3 或 5 整除,所以結果會是"Plong"。
  • 30 可以被 3 和 5 整除,但不能被 7 整除,所以結果會是"PlingPlang"。
  • 34 不能被 3、5 或 7 整除,所以結果會是"34"。
Note

要測試一個數字能否被另一個數字整除,常見的做法是把餘數或模數拿來跟零比較。 大多數程式語言都為其中一種(或兩種)提供了運算子或函式。

這個練習在 Python 中的結構

這個練習最適合用 Python 的 %(取餘數)運算子來解,它會回傳正整數除法所得的餘數。 它有一個等效的方法,就是 operator 模組 裡的 operator.mod()。

Python 在 math 模組 中也另外提供了幾個「餘數」方法。 math.fmod()的行為和 % 類似,但處理的是浮點數。 math.remainder()針對相除的餘數實作了「最接近零的步進」演算法。 雖然我們鼓勵你熟悉這些方法,但兩者的結果都不會與 % 完全一致,因此不建議在這個練習中使用。

內建函式divmod()在搭配兩個正整數使用時,也能得到與 % 相符的餘數,但它回傳的是一個需要拆解的 tuple。

透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Python Exercism

準備好開始 雨滴 了嗎?

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

深入探索 雨滴!

探索各種解法,包括函數式管線、矩陣乘法、用巨集預先計算表格的解法、物件導向做法、Python 與 TCL 的精彩應用,以及企業版。