如何让程序只显示最长的单词而不是字符串中的每个单词?

时间:2016-03-09 20:47:16

标签: python function

def find_longest_word(string):
    d = []
    a = string.split()  
    for x in a:
        b = (x.count("") - 1)
        d.append(b)
        f = max(d)
        print (x, f)

find_longest_word("hello my name is k")

程序将打印每个单词旁边最长的单词,但我只想打印最长的单词。请帮忙。

4 个答案:

答案 0 :(得分:1)

试试这个:

def find_longest_word(string):
    a = string.split()  
    f = -1
    longest = None
    for x in a:
        if len(x) > f:
            f = len(x)
            longest = x
    print (longest, f)

>>> find_longest_word("hello my name is k")
('hello', 5)

答案 1 :(得分:1)

这是一个简短的函数,用于查找句子中最长的单词:

def find_longest_word(s):
    return max([(len(w), w) for w in s.split(" ")])[1]

示例:

find_longest_word("This is an incredibly long sentence!")
>>> incredibly

<强>解释: 这将创建一个包含列表推导和s.split(" ")的元组列表,然后将单词的长度和单词本身存储在元组中。然后在元组列表上调用max函数,它检索具有最长字长的元组(即第0个元组参数),然后它只返回带有{的第一个元组(即第一个元组参数) {1}}。

注意:如果您想返回单词的长度和单词本身,您可以简单地将函数修改为:...)[1]。这将删除索引到元组并返回完整的元组。

答案 2 :(得分:1)

一个班轮:

def longest(s):
    return sorted(s.split(), key=len, reverse=True)[0]

print longest("this is a string")

答案 3 :(得分:0)

x.count("")返回""在字符串中显示的次数。让我们说字符串是&#34; mystring&#34;。 "m"不是"""y"不是"""s"不是""等等。总数:0。字符串的长度,使用len(x)。另外,您f等于d中的最高数字,而不是b。这是一个修改版本:

def find_longest_word(string):
    a = string.split()
    longest = max(((word, len(word)) for word in a), key=lambda x: x[1])
    print longest

测试:

find_longest_word("This is my sentence that has a longest word.")

输出:

('sentence', 8)

如果您希望将其打印为sentence: 8,请使用print '{}: {}'.format(longest)