2013-07-21 97 views
0

我在Python 2.7中有一段非常簡單的代碼,我必須使用while loop向後遍歷索引。我得到了一個打印出來的地方,但是我的while loop並沒有停在最後,因此產生了一個超出範圍的錯誤,我不知道爲什麼。我正在努力嘗試,但失敗。向後遍歷索引變量,Python

這裏是我的代碼:

fruit = 'banana' 
print len(fruit) 

index = 0 
while index <= len(fruit): 
    letter = fruit[index - 1] 
    print letter 
    index = index - 1 

我的想法是怎麼回事時,我初始化了var index0,然後問蟒蛇用var fruit工作而指數小於或等於到水果的大小。問題是索引達到0時,我也嘗試過使用<,但是我編寫代碼的方式似乎仍然超出了0,但我不確定。

回答

5

您的指數從0, -1, -2...開始,而長度爲0或正數,一旦負指數超出-len(lst)限制,就會出現超出界限的錯誤。

>>> test = [1, 2, 3] 
>>> test[-1] 
3 
>>> test[-2] 
2 
>>> test[-4] 

Traceback (most recent call last): 
    File "<pyshell#75>", line 1, in <module> 
    test[-4] 
IndexError: list index out of range 

您可以通過索引變量初始化爲len(lst) - 1和迭代解決這個問題,直到0

index = len(test) - 1 
while index >=0: 
    # Do Something 

或者,如果你把你的index0,那麼你可以在你的while循環改變

while index > -len(fruit): 
    # Do Something 

替代方案 - 您可以使用for循環在此處的反轉列表中以反向遍歷列表。見示例

>>> testList = [1, 2, 3] 
>>> for i in testList[::-1]: 
     print i 


3 
2 
1 

testList[::-1]Python's Slice Notation

+0

其實它應該是'while index> -len(fruit)'使它工作。你的答案是提問者代碼的修改版本:)我的意思是,你的答案沒問題,但在我看來,最好向申請者展示如何使他的代碼按照他的意思工作。 –

+0

是的。我也可以改變這一點。補充說,也是一種替代方案。 :) –

+0

謝謝,我把索引改成了'index = len(fruit)-1',並在循環'letter = index [fruit - 1]'內改變爲'letter = index [fruit]'並修復了它。 –