这是我要解决的问题:
创建一个程序,输入一个短语(如著名的引号)并打印所有以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'之后也不会打印出最后一个单词。为什么会这样?
答案 0 :(得分:-1)
您可以遍历字符串中的每个单词,并计算其中有多少以这些字母开头的单词,而不是您在做什么。阅读有关函数str.split()的信息,在参数中输入分隔符,在本例中为'',因为您要对单词进行计数,并且返回字符串列表。在循环中对其进行迭代,它应该可以工作。