0

我正在尝试获取 4x4 网格中二进制整数左侧、右侧、底部和顶部的项目索引。我现在所做的似乎并没有得到正确的值索引。

        if self.data[index] == 1:
            self.data[index] = 0
                if self.data.index(self.data[index]) - 1 >= 0:
                    print("Left toggled")
                    if self.data[index - 1] == 1:
                        self.data[index - 1] = 0
                    else:
                        self.data[index - 1] = 1

到目前为止,我正在尝试使用010011100100返回 -1 的位数组,如果index = 5在上面的代码示例中它应该返回 4 作为 5-1=4。

我假设我的 if 语句if self.data.index(self.data[index]) - 1 >= 0:是错误的,但我不确定我要完成的语法。

4

1 回答 1

4

让我们单步执行您的代码,看看会发生什么...

#We'll fake these in so the code makes sence...
#self.data must be an array as you can't reassign as you are doing later
self.data = list("010011100100")
index = 5

if self.data[index] == 1:      # Triggered, as self.data[:5] is  "010011"
    self.data[index] = 0       # AHA self.data is now changed to "010010..."!!!
        if self.data.index(self.data[index]) - 1 >= 0:
           #Trimmed

在倒数第二行中,您现在得到self.data[index]的是0我们之前更改的行。

但还要记住,它Array.index()返回数组中该项目的第一个实例。所以self.data.index(0)返回 的第一个实例0,它是第一个或更准确地说是第零个元素。因此是self.data.index(0)给予0并且是0-1......-1

至于你的代码应该是什么,这是一个更难回答的问题。

我认为您的条件可能只是:

width  = 4 # For a 4x4 grid, defined much earlier.
height = 4 # For a 4x4 grid, defined much earlier.

...

if index%width == 0:
    print "we are on the left edge"
if index%width == width - 1:
    print "we are on the right edge"
if index%height == 0:
    print "we are on the top edge"
if index%height == height - 1:
    print "we are on the bottom edge"
于 2013-09-23T04:24:20.567 回答