2013-12-08 43 views
0

這裏是我的代碼:什麼是IndexError?我不斷收到這

quote = input("Enter a Sentence: ") 

a = len(quote) 
counter = 0 
counter1 = 0 
reverse = a 

print("The Length of the sentence is",a,"characters long!") 

for x in range(0,a): 
    if str.isspace(quote[x]) == True: 
     counter = counter + 1 

print("The Length of the sentence is",a - counter,"characters long (excluding space...)!") 

for x in range(0,a): 
    if str.isupper(quote[x]) == True: 
     counter1 = counter1 + 1 

print("The number of Upper Case Characters in the sentence is",counter1,"characters!") 

print("The number of Lower Case Characters in the sentence is",a-counter1,"characters long!\n") 


while reverse >= 1: 
    r = reverse 
    print(quote[r]) 
    r = r - 1 

它的目的是要找到這句話的一切,但唯一的問題是在底部「而」循環。它似乎不起作用,它的目的是「反轉」這個句子。但是,它給了我一個錯誤,看起來有點像這樣:

Traceback (most recent call last): 
    File "C:\Documents and Settings\ususer\My Documents\Downloads\StringStuff.py", line 27, in <module> 
    print(quote[r]) 
IndexError: string index out of range 

我做錯了什麼?請幫忙!

+0

使用'print(r)'發現你的問題 – mrKelley

回答

3

Python是0的索引,因此字符串的第一個字符是str[0],最後一個是str[len(str) - 1]。所以,因爲你從reverse = len(quote)開始,最後你做的是quote[len(quote)],這是一個超過字符串末尾的字符。

所以,你應該開始reverse = a - 1和你的循環在年底應該是這個樣子:

while reverse >= 0: 
    print(quote[reverse]) 
    reverse = reverse - 1 
+1

還要注意他的當前while循環永遠不會退出,因爲他減少了'r',而不是'reverse'。 – kevinsa5

+0

謝謝,但它似乎沒有工作。它只打印第二個字符。 –

+0

@ Raihaan-Tech立即試用。你的循環有點不對。 – Xymostech

0

您已經運行到了Python從0開始索引的通病,但返回a的lenght列表作爲從1開始計數的有效整數。這導致對於任何列表,l[len(l)]都會給你IndexError,因爲長度爲10的列表只有索引0 ... 9。 您只需要初始化reverse = len(quote)-1即可。 您還必須在while循環內下降循環變量,因此請使用reverse-=1而不是r=r-1

+0

謝謝,但同樣的錯誤出現... –

+0

但你的初始化反向工程就好了。 –

相關問題