2015-08-15 59 views
1

我必須爲我正在學習的入門級編程課程編寫一小段代碼 - 直到我嘗試過這個課程時,我才遇到了麻煩。代碼工作正常,據我所知,但我不斷得到IndexError,任何人都可以告訴我我失蹤了什麼?Python:類型索引錯誤的例外?

vowel = {"a", "e", "o", "i", "u", "A", "E", "I", "O", "U"} 
word = input("Enter a phrase: ") 

if word[0] in vowel: 
    print("an", word) 
else: 
    print("a", word) 

編輯: 代碼的現在完美的工作,我需要的是更多的if語句爲空字符串,按您的建議

+0

什麼時候出現錯誤?是特定的輸入(因爲如果單詞是空字符串,試圖索引第一個字符將拋出並且索引超出範圍錯誤,則不首先檢查)? – scrappedcola

+0

顯然它發生在第4行? – Saltharion

回答

0

我不知道確切的錯誤你得到。你提到IndexError,通常會提出超出範圍的索引。在你的代碼中,我可以看到這個問題的唯一地方是word[0]。但是,只有在沒有輸入字詞的情況下才會發生這種情況我假設你的代碼只是一個例子,並且總是輸入一個單詞。

您還正在使用大括號表示法定義一組(vowel),這可能是某些舊python(2.7之前)的問題。

編輯:

基於您的評論我敢肯定,它實際上是關於沒有被輸入的詞。所以,不是爲了完全解決你的測試問題,我只是說你應該考慮在你的程序中word爲空的情況。

+0

我正在採用的課程中,我們使用了一個名爲Grok的網站,而不是純Python,所以我認爲它運行的是Python的最新版本,但我不確定 - 無論如何我都會將其更改回方括號。至於錯誤,網站當場標記代碼,並且每當我嘗試提交這篇文章時,它都會說'您的提交引發了類型indexerror的異常' - 儘管沒有任何我嘗試使用的輸入實際上未能生成正確的輸出 – Saltharion

+0

我想我有點理解你在做什麼 - 當我沒有輸入一個單詞時,它提出了一個關於範圍的錯誤。這是通過嘗試爲我的變元定義一個範圍來解決的嗎? – Saltharion

+0

基本上,您應該只是做另一個條件語句來檢查單詞爲空的特殊情況。在python中,空字符串是'False',所以檢查'if word'是否應該。你應該優雅地處理這個特殊情況,雖然我不知道如何,因爲我不知道該程序的預期結果。 –

0

您可能需要檢查空輸入,這意味着測試系統只是輸入而不是輸入實際的字符串。當您嘗試索引空字符串的第一個字符時,您將收到索引錯誤。嘗試類似於:

vowel = {"a", "e", "o", "i", "u", "A", "E", "I", "O", "U"} 
word = input("Enter a phrase: ") 
if word == "": 
    print("please enter a word") 
elif word[0] in vowel: 
    print("an", word) 
else: 
    print("a", word) 

您應該檢查賦值是否有關於如何處理空字符串的任何說明。