字符串索引行与无索引行

时间:2019-01-16 17:57:27

标签: python string indexing letter

我正在为一门课程做一项工作,该课程由一个程序组成,该程序仅打印以定义的字母范围开头的单词。

我尝试不成功使用此代码:

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

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

print(word.upper())

我遇到一个index out of range错误。我只有在更换生产线后才能使用
(word[0].lower() >= "h".lower())
与线
(word.lower() >= "h".lower())

为什么寻址字符串索引的行不起作用?

1 个答案:

答案 0 :(得分:2)

word为空字符串时,您将收到该错误。

如果连续有两个非字母字符,则会发生这种情况。检查第一个字母后,您分配word = ""。然后,当您处理下一个字符时,word仍然为空,因此没有word[0]

如果第一个字母至少为“ h”`,则整个单词也是如此,因此无需索引它。只需写:

if word.lower() >= "h":

或者您可以先检查word中是否有任何东西:

if word and word[0].lower() >= "h":

无需编写"h".lower()。已经是小写了。

由于您需要重新初始化word(无论它是否以范围内的字母开头),因此请将该分配取出

因此,更正后的代码应为:

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