比较字符串中单词的长度

时间:2014-11-23 19:59:02

标签: python python-3.x

需要找到字符串中最长的单词并打印该单词。 1.)要求用户输入以空格分隔的句子。 2.)查找并打印最长的单词。如果两个或多个单词的长度相同,则打印第一个单词。

这是我到目前为止所拥有的

def maxword(splitlist):      #sorry, still trying to understand loops
    for word in splitlist:
        length = len(word)
        if ??????

wordlist = input("Enter a sentence: ")
splitlist = wordlist.split()

maxword(splitlist)
当我试图比较一个世界中的文字长度时,我碰到了一堵墙。我是一名已经使用python 5周的学生。

5 个答案:

答案 0 :(得分:2)

def longestWord(sentence):
    longest = 0   # Keep track of the longest length
    word = ''     # And the word that corresponds to that length
    for i in sentence.split():
        if len(i) > longest:
            word = i
            longest = len(i)
    return word

>>> s = 'this is a test sentence with some words'
>>> longestWord(s)
'sentence'

答案 1 :(得分:1)

你正朝着正确的方向前进。您的大多数代码看起来都很好,您只需要完成逻辑以确定哪个是最长的单词。由于这似乎是一个家庭作业问题,我不想给你直接答案(即使其他人都认为对你这样的学生没用),但有多种方法可以解决这个问题。

你正确地得到每个单词的长度,但是你需要比较每个单词的长度?试着大声说出问题以及你如何大声解决问题。我想你会发现你的英文描述很好地转换为python版本。

另一个不使用if语句的解决方案可能会使用内置的python函数max,它接收一个数字列表并返回它们的最大值。你怎么用那个?

答案 2 :(得分:1)

您可以将max与密钥一起使用:

def max_word(splitlist):      
    return max(splitlist.split(),key=len) if splitlist.strip() else "" # python 2


def max_word(splitlist): 
    return max(splitlist.split()," ",key=len) # python 3

或者按照jon clements的建议使用try / except:

def max_word(splitlist):
    try:
        return max(splitlist.split(),key=len)
    except ValueError:
        return " "

答案 3 :(得分:1)

您可以使用heapq模块中的nlargest

import heapq
heapq.nlargest(1, sentence.split(), key=len)

答案 4 :(得分:0)

sentence = raw_input("Enter sentence: ")
words = sentence.split(" ")
maxlen = 0
longest_word = ''
for word in words:
    if len(word) > maxlen:
          maxlen = len(word)
          longest_word = word
print(word, maxlen)