【问题标题】:Not Sure How to Account for The Last Word in a String不确定如何解释字符串中的最后一个单词
【发布时间】: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


【解决方案1】:

当你的 for 循环结束时,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 = ''

    if word.lower() >= 'h':
        print(word.upper())

【讨论】:

  • Stef,感谢您的清晰解释和直截了当的解决方案!你的解决方案对我有用!
猜你喜欢
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
  • 2011-04-11
  • 2022-12-18
相关资源
最近更新 更多