【发布时间】:2020-01-19 19:32:27
【问题描述】:
我正在编写一个程序,它将一个著名的引用或短语作为输入,并打印出所有以字母 h 到 z 开头的单词。
以下是我编写此程序时获得的指导:
1) 通过构建占位符变量来拆分单词:word 2)循环输入字符串中的每个字符 3)检查字符是否为字母 4)在每个循环中添加一个字母,直到遇到非字母字符
如果字符是字母 1)将字符添加到单词 2) 检测到非字母(空格、标点符号、数字……)定义单词的结尾并转到 else
否则 按字母顺序检查单词是否大于“g” a) 打印字 b) 设置 word = 空字符串 要不然 1)设置word =空字符串并构建下一个单词 提示:使用 .lower()
考虑一下如果最后一个单词不以空格或标点符号等非字母字符结尾,你将如何打印它?
我编写了一个函数,创建了一个变量,该变量获取用户为短语输入的任何值,并声明了一个名为 word 的空字符串变量。然后,我创建了一个循环遍历短语中的所有字符的 for 循环。然后我有一个 if 条件,它使用 isalpha() 方法来评估一个字符是否按字母顺序排列,如果为真,它将将该字符添加到先前创建的 word 变量中。
在那之后,我有一个包含嵌套 if 和 else 的 else 条件。嵌套的 if 将查看应用了 lower() 方法的 word 变量,并查看它是否大于或等于 'h'。如果是,它将打印出单词并使用upper() 方法。打印单词后,它会将单词变量重置为空字符串。
如果嵌套的 if 失败,它会转到嵌套的 else,这会将 word 变量设置回空字符串。
def test_words_after_g():
quote = input("enter a 1 sentence quote, non-alpha separate words:")
word = ''
for character in quote:
if character.isalpha() == True:
word += character
else:
if word.lower() >= 'h':
print(word.upper())
word = ''
else:
word = ''
test_words_after_g()
我还没有弄清楚如何回答问题中的问题 - “考虑一下如果最后一个单词不以空格或标点符号等非字母字符结尾,你将如何打印它?”下面是一个示例输入和输出。
示例输入:
enter a 1 sentence quote, non-alpha separate words: Wheresoever you go, go with all your heart
样本输出:
WHERESOEVER
YOU
WITH
YOUR
HEART
这是我的实际输入和输出
实际输入:
Wheresoever you go, go with all your heart
实际输出:
WHERESOEVER
YOU
WITH
YOUR
我在输出中缺少心脏,我很难弄清楚如何修改我的代码以将其包含在输出中。任何指导将不胜感激。
【问题讨论】:
-
您可能需要重新考虑您的方法并尝试使用列表推导,例如: [word for word in string.split() if word[0] not in ("g", "h")]
标签: python string for-loop conditional-statements