首页 > 解决方案 > 字符串索引行与没有索引的行

问题描述

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

我试图使用此代码失败:

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())
当我用 line 替换line时,我才让它工作
(word.lower() >= "h".lower())

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

标签: pythonstringindexingletter

解决方案


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 = ""

推荐阅读