扫雷

扫雷

中等

简介

扫雷 是一款流行的游戏,玩家要根据数字提示找出地雷,提示中的数字表示与该方格直接相邻(水平、垂直或斜向)的地雷数量。

说明

你的任务是在一个已完成的扫雷棋盘中,为空格填上周围的地雷数量。 棋盘是一个由方格组成的矩形,每个方格要么是空格(' '),要么是一颗地雷('*')。

对于每个空格,数出与它相邻的地雷数量(水平、垂直、对角都算)。 如果这个空格周围没有地雷,就把它留空。 否则,把它替换为相邻地雷的数量。

例如,你可能会收到一个 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 简化边界检查、函数式管道以及二维矩阵的使用。