【发布时间】:2020-12-29 19:02:47
【问题描述】:
我想知道如何压缩这段代码:
def chain_reaction(map, coord):
explosion = map[coord[0]][coord[1]]
map[coord[0]][coord[1]] = 0
for i in range(1, explosion + 1):
try:
if map[coord[0] + i][coord[1]] != 0:
chain_reaction(map, (coord[0] + i, coord[1]))
except IndexError:
pass
try:
if map[coord[0] - i][coord[1]] != 0:
chain_reaction(map, (coord[0] - i, coord[1]))
except IndexError:
pass
try:
if map[coord[0]][coord[1] + i] != 0:
chain_reaction(map, (coord[0],coord[1] + i))
except IndexError:
pass
try:
if map[coord[0]][coord[1] - i] != 0:
chain_reaction(map, (coord[0], coord[1] - i))
except IndexError:
pass
try:
map[coord[0] + i][coord[1]], map[coord[0] - i][coord[1]] = 0, 0
map[coord[0]][coord[1] + i], map[coord[0]][coord[1] - i] = 0, 0
except IndexError:
pass
return map
map = [[0,1,0,2], [3,0,1,1], [0,1,0,1], [0,0,2,0], [1,0,0,0]]
chain_reaction(map, (3,2))
脚本的目标是在给定地图的情况下模拟爆炸的连锁反应,其中任何正整数都是炸弹,其值是其大小。如果爆炸击中另一颗炸弹,则会导致该炸弹爆炸。
我们还将第一次爆炸作为坐标。
我的主要问题是,我似乎无法找到一种方法,只使用 try - except 工具而不在每种情况下都使用它。
附:这是一道古老的考试题,我们被告知我们不能导入任何模块,我们将根据效率评分
【问题讨论】:
-
轻微的挑剔:你应该避免使用像
map这样的关键字作为变量,因为你可能真的想在你的函数体中将它们用于它们的原始目的。更好的名字可能是matrix或grid。
标签: python function matrix repeat try-except