Python-字符串索引超出范围问题

时间:2018-09-12 04:35:25

标签: python if-statement

这是我要解决的问题:

  

创建一个程序,输入一个短语(如著名的引号)并打印所有以h-z开头的单词。

我解决了问题,但是前两种方法不起作用,我想知道为什么:

#1字符串索引超出范围

quote = input("enter a 1 sentence quote, non-alpha separate words: ")
word = ""

for character in quote:
    if character.isalpha():
        word += character.upper()
    else:
        if word[0].lower() >= "h":
            print(word)
            word = ""
        else: 
            word = ""

对于“ g”之后的任何单词,我都会收到IndexError: string index out of range消息。 else语句不应该理解吗?我不明白为什么不这样做,因为如果我从[]中除去括号word[0],它就可以工作。

#2:不打印最后一个字

quote = input("enter a 1 sentence quote, non-alpha separate words: ")
word = ""

for character in quote:
    if character.isalpha():
        word += character.upper()
    else:
        if word.lower() >= "h":
            print(word)
            word = ""
        else: 
            word = ""

在此示例中,它在一定程度上起作用。它会消除“ h”之前的所有单词,并在“ h”之后输出单词,但是由于某些原因不会打印最后一个单词。我使用什么引号都没有关系,即使它在'h'之后也不会打印出最后一个单词。为什么会这样?

1 个答案:

答案 0 :(得分:-1)

您可以遍历字符串中的每个单词,并计算其中有多少以这些字母开头的单词,而不是您在做什么。阅读有关函数str.split()的信息,在参数中输入分隔符,在本例中为'',因为您要对单词进行计数,并且返回字符串列表。在循环中对其进行迭代,它应该可以工作。