2013-09-23 163 views
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

通過您的代碼讓一步,看看會發生什麼......

#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)給出00-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" 
+0

是啊,這是關於多遠我想通了。我試圖基本上做的是相應地更改第四個索引,而不是對索引內的值進行數學運算。 – Bob

+0

@BobDunakey Forth索引,你的意思是第四? – 2013-09-23 04:32:00

+0

@LegoStromtrooper是錯字。 – Bob

相關問題