我正在为一门课程做一项工作,该课程由一个程序组成,该程序仅打印以定义的字母范围开头的单词。
我尝试不成功使用此代码:
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())
。
为什么寻址字符串索引的行不起作用?
答案 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 = ""