踩地雷

踩地雷

中等

簡介

踩地雷是一款熱門遊戲,玩家必須運用數字提示找出地雷,這些提示會指出與某個方格直接相鄰(水平、垂直、對角)的地雷數量。

說明

你的任務是在一個已經完成的踩地雷棋盤上,為空格標上周圍的地雷數量。 棋盤本身是一個長方形,由許多格子組成,每個格子不是空格(' ')就是地雷('*')。

對每個空格來說,計算與它相鄰的地雷數量(水平、垂直、對角都算)。 如果這個空格旁邊沒有地雷,就讓它保持空白。 否則就把它換成相鄰的地雷數量。

舉例來說,你可能會收到像這樣的 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 巧妙簡化邊界檢查、函式化管線,以及二維矩陣的使用。