轨道
/
Python
Python
/
练习
/
围棋计数
围棋计数

围棋计数

中等

说明

数一数围棋棋盘上的得分点。

在围棋(又称 baduk、igo、cờ vây 和 wéiqí)中,用你的棋子把空的交叉点完全围住就能得分。被一名玩家围住的交叉点称为他的地盘。

计算每名玩家的地盘。可以假设,任何被困在对方地盘里的棋子都已经从棋盘上拿掉了。

确定包含指定坐标的那块地盘。

一次可以围住多个空的交叉点,而且判断是否围住时,只有横向和纵向相邻的交叉点才算数。下图中,起作用的棋子标为“O”,不起作用的棋子标为“I”(忽略不计)。空白处表示空的交叉点。

+----+
|IOOI|
|O  O|
|O OI|
|IOI |
+----+

更准确地说,如果一个空的交叉点的所有相邻点要么是该玩家的棋子,要么是属于该玩家地盘的空的交叉点,那么这个交叉点就属于该玩家的地盘。

想了解更多,可以查看 维基百科 或 Sensei's Library。

异常消息

有时需要抛出异常。这样做时,你应该始终附上一条有意义的错误消息,说明错误的来源。这会让你的代码更易读,也能极大地帮助调试。如果你已经知道错误来源会是某种类型,可以选择抛出某个内置错误类型,但同样应该附上有意义的消息。

这个练习要求你在传入无效坐标时,使用 raise 语句来“抛出”ValueError。只有同时raise这个exception并附上消息,测试才会通过。

要抛出带消息的ValueError,请把消息作为参数传给exception类型:

# when the coordinates for the piece are invalid
raise ValueError('Invalid coordinate')
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Python Exercism

准备好开始 围棋计数 了吗?

注册 Exercism,借助 17 个概念146 个练习 和真人导师指导,学习并掌握 Python,全部免费。