【问题标题】:Python: exception of type index error?Python:类型索引错误的异常?
【发布时间】:2015-11-08 09:34:42
【问题描述】:

我必须为我正在学习的介绍性编程课程编写一小段代码 - 在我尝试这个之前我没有遇到任何问题。据我所知,该代码运行良好,但我不断收到 IndexError,谁能告诉我我错过了什么?

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 语句

【问题讨论】:

  • 什么时候出现错误?是特定的输入(由于您不首先检查单词是否为空字符串,因此尝试索引第一个字符将引发索引超出范围错误)?
  • 显然发生在第 4 行?

标签: python indexing conditional-statements


【解决方案1】:

您可能需要检查空输入,这意味着测试系统只是按回车而不是输入实际字符串。当您尝试索引空字符串的第一个字符时,您将收到索引错误。尝试类似的方法:

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)

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

【讨论】:

    【解决方案2】:

    我不确定你得到了什么确切的错误。您提到IndexError 通常会针对超出范围的索引引发。在您的代码中,我可以看到可能存在此类问题的唯一地方是word[0]。但这只有在没有输入任何单词的情况下才会发生。我假设您的代码只是一个示例,并且始终输入一个单词。

    您还使用花括号表示法定义了一个集合 (vowel),这对于一些旧的 python(2.7 之前)可能是一个问题。

    编辑:

    根据您的评论,我很确定这实际上是关于未输入的单词。所以,不完全为你解决你的测试问题,我只想说你应该考虑word在你的程序中为空的情况。

    【讨论】:

    • 我正在上的课程让我们使用一个名为 Grok 的网站,而不仅仅是普通的 Python,所以我认为它运行的是最新版本的 Python,但我不确定 - 我会改回来无论如何都要放在方括号里。至于错误,网站会在现场标记代码,每当我尝试提交这篇文章时,它都会说“你的提交引发了 indexerror 类型的异常”——尽管如此,我尝试使用的输入实际上都没有产生正确的输出
    • 我想我有点理解你的意思 - 当我没有输入一个单词时,它出现了关于范围的错误。尝试为我的变量元音指定一个范围可以解决这个问题吗?
    • 基本上,你应该只做另一个条件语句来检查 word 为空的特殊情况。在 python 中,空字符串是False,所以应该检查if word。您应该优雅地处理这种特殊情况,尽管我不确定如何处理,因为我不知道程序的确切期望。
    猜你喜欢
    • 2017-01-01
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 2010-11-16
    相关资源
    最近更新 更多