2015-08-15 99 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) 

您应该检查赋值是否有关于如何处理空字符串的任何说明。