【问题标题】:Returns a count of the number of words in the string that contain length characters返回字符串中包含长度字符的单词数
【发布时间】:2020-09-04 15:07:15
【问题描述】:

我在正确学习 python 方面已经有几周的时间了,但找不到从我目前拥有的东西继续下去的方法。问题是:

编写一个函数 num_words(string, length),它接受一个字符串参数并返回字符串中包含长度字符的单词数。如果没有给定长度的单词,则应返回 0。 一个词被定义为一个最大长度的字符序列,而不是“空白”字符。 提示:使用字符串的 split 方法。

我目前有:

def num_words(string, length):
    """Takes a string argument and returns a count of the 
    number of words in the string that contain length characters"""
    result = ()
    for strings in string:
        for letters in strings:
            len(letters.split(string))
            return letters
    
word_count = num_words("Oh no it's a list filter!", 2)
print(word_count)
word_count = num_words("Oh no its a list filter!", 4)
print(word_count)

输出是

0
0

它应该输出什么:

2
1

使用这些测试:

word_count = num_words("Oh no it's a list filter!", 2)
print(word_count)

word_count = num_words("Oh no its a list filter!", 4)
print(word_count)

我认为您必须使用带有 len 和 split 函数的嵌套 for 循环,但不知道如何找到单词中字母的长度,然后以相应的长度返回它。一个完整的答案将不胜感激:)

【问题讨论】:

    标签: python list iteration


    【解决方案1】:

    以下是您调用函数的方式:

    num_words("Oh no it's a list filter!", 2)
    

    所以,string 参数是"Oh no it's a list filter!"

    然后,在函数体中:

    ...
    for strings in string:
        for letters in strings:
            len(letters.split(string))
            return letters
    

    第一个 for 循环 (for strings in string:) 遍历 string 参数的每个字符。对于循环的每次迭代,strings 将是一个字符。比如第一次迭代是"O",第二次是"h"

    第二个嵌套的 for 循环 (for letters in strings:) 遍历 strings 中的所有字符。由于strings 总是只有一个字符的字符串,所以这个内循环也只会有一次迭代,基本上没有意义。

    其余的代码实际上没有意义。您计算列表letters.split(string) 的长度,并立即丢弃结果。然后您返回字符串letters,它会提前终止您的函数,并且与您声称拥有的输出不匹配。

    您需要在空格上拆分 string 参数以获取单词列表(字符串),然后过滤单词列表以仅保留具有所需字母数的单词,然后返回长度该列表:

    def num_words(string, required_length):
        tally = 0
        for word in string.split():
            if len(word) == required_length:
                tally += 1
        return tally
    

    或者类似的东西:

    def num_words(string, required_length):
        return len(list(filter(lambda word: len(word)==required_length, string.split())))
    

    【讨论】:

    • 哦,鸭打字的乐趣! OP注意:如果它像鸭子一样走路并像鸭子一样嘎嘎叫,它可能是一只鸭子。除非它是一个字符串。
    • @penguins1234 不客气。让我知道是否有任何令人困惑的地方。
    • sum(len(word) == length for word in string.split()).
    【解决方案2】:

    您需要将字符串拆分为单词,检查每个单词的长度,并使用一个变量来跟踪所需长度的单词总数。请注意,最后的return 语句应该在任何循环之外(以便循环在返回计数之前完全完成)。另请注意,只需要一个for 循环(单词循环)——您不需要循环字符,因为len 函数已经告诉您单词中的字符数。

    def num_words(string, length):
        """Takes a string argument and returns a count of the 
        number of words in the string that contain length characters"""
        count = 0
        for word in string.split():
            if len(word) == length:
                count += 1
        return count
        
    word_count = num_words("Oh no it's a list filter!", 2)
    print(word_count)
    word_count = num_words("Oh no its a list filter!", 4)
    print(word_count)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-29
      • 2017-02-28
      • 2020-03-04
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多