花田

花田

中等

简介

Flower Field 是对热门游戏 Minesweeper 的一次充满温情的重新演绎。游戏的目标是利用数字提示找出花园中所有的花,这些提示会说明有多少朵花与某个方格直接相邻(水平、垂直或对角方向)。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 简化边界检查、函数式管道以及二维矩阵的使用。