我有一个功能定义为:
的网格def getCorners(width, height, tile1)
说网格看起来像这样:
1 2 3 4
5 6 7 8
在这种情况下,我需要找到1,4,5和8。我建立了变量,我相信它们会起作用。
firsttile = 1 # This is the first tile of the grid
TR_tile = width # Top right tile
max = width * height
BL_tile = max - width + 1 # Bottom left tile
lasttile = max # This is the last tile of the grid
我想尝试编写对每个网格都适用的条件语句,无论大小如何。
我希望这是有道理的。谢谢你的帮助!
答案 0 :(得分:0)
如果我理解你的问题,你想测试一个给定的数字是否在由宽度和高度定义的网格的角上。您目前有代码来计算角落瓷砖的数量,但您不知道从哪里开始。
解决问题的一种方法是使用您当前正在进行的计算,并将其结果与给定数字进行比较。您可以使用一堆==
比较,或者您可以将计算出的角点值放入某种容器中,并使用in
一次进行所有比较:
# do your code first, then...
if tile1 == firsttile or tile1 == TR_tile or tile1 == BL_tile or tile1 == lasttile:
或者:
if tile1 in (firsttile, TR_tile, BL_tile, lasttile):
这种方法可行,但效率不高。更好的方法是将tile数除以宽度,并使用结果和余数来分辨tile所在的列和行。角落切片位于第一行和最后一行和列(以任意组合)。请注意,零索引切片的计算更清晰。如果你需要坚持从1开始的瓦片编号,你需要先减去一个:
# no setup computation needed
row, column = divmod(tile1-1, width)
if (row == 0 or row == height-1) and (column == 0 or column == width-1):