花田

花田

中等

簡介

Flower Field 是熱門遊戲《踩地雷》的暖心改編版。 遊戲的目標是找出花園裡所有的花,方法是利用數字提示,這些提示會指出與某個方格直接相鄰(水平、垂直、對角)的花有幾朵。 「Flower Field」曾收錄在義大利、德國、南韓、日本與台灣的 Microsoft Windows 地區版本中。

說明

你的任務是在一座完成的花田花園中,為空格加上花的數量。 花園本身是一塊由格子組成的長方形棋盤,每個格子不是空格(' ')就是一朵花('*')。

對每個空格,數一數與它相鄰的花有幾朵(水平、垂直、對角)。 如果這個空格沒有相鄰的花,就讓它保持空白。 否則就用相鄰花的數量取代它。

舉例來說,你可能會收到像這樣一塊 5 x 4 的棋盤(為了在畫面上顯示,這裡用 '·' 字元來代表空格):

·*·*·
··*··
··*··
·····

你的程式應該把它轉換成這樣:

1*3*1
13*31
·2*2·
·111·

例外訊息

有時我們需要引發例外。當你這麼做時,應該一律附上有意義的錯誤訊息,指出錯誤的來源。這能讓程式碼更好讀,對除錯也有很大的幫助。如果你知道錯誤來源會是某種類型,可以選擇引發其中一種內建錯誤類型,但還是應該附上有意義的訊息。

這道練習要求你在 board() 函式收到格式錯誤的輸入時,使用 raise 敘述來「拋出」ValueError。只有同時 raise 這個 exception 並附上訊息,測試才會通過。

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

# when the board receives malformed input
raise ValueError("The board is invalid with current input.")
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Python Exercism

準備好開始 花田 了嗎?

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

深入探索 花田!

我們會探討巢狀`for`迴圈、用 min/max 巧妙簡化邊界檢查、函式化管線,以及二維矩陣的使用。