Python 比较字符串中单词的长度

Python 比较字符串中单词的长度,python,python-3.x,Python,Python 3.x,需要找到字符串中最长的单词并打印该单词。 1.)要求用户输入用空格分隔的句子。 2.)查找并打印最长的单词。如果两个或多个单词的长度与第一个单词的长度相同,则打印第一个单词 这就是我目前所拥有的 def maxword(splitlist): #sorry, still trying to understand loops for word in splitlist: length = len(word) if ?????? wordlist

需要找到字符串中最长的单词并打印该单词。 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周的学生。

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

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)
您可以正确地获得每个单词的长度,但是您需要将每个长度与什么进行比较?试着大声说出问题,以及你个人如何解决问题。我想你会发现你的英文描述很好地翻译成了python版本

另一个不使用
if
语句的解决方案可能使用内置的python函数
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 " "

您可以使用heapq模块中的NLAGEST

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

python3.4有一个在iterable为空时返回的标记。@kroolik True,没有看到python3标记您最好使用
try:return max(splitlist.split(),key=len)
和一个
除外的值error:return'
在我看来没有单词是例外情况,因为
.split()
默认情况下,将自动处理剥离和多个拆分分隔符。。。(如果splitlist.strip()似乎有点浪费)@JonClements、
maxword(“”
maxword(“”
)将在python2中抛出错误。我只是想添加一个简单简洁的方法来捕捉类似于python3版本的案例。我不认为OP真的是在检查空字符串,我只是为了完整性而添加了它,但肯定try/except可能是更好的方法。@Padraic我想说的是,类似的东西可以在任何2.5+版本中工作,并且不会显式地对空字符串进行特殊情况检查(另外-我认为你的3.x版本已经坏了,因为它将用一个字符来比较单词列表的长度)谢谢你的回答。这正是我遇到的问题。我知道我想做什么,只是不知道如何实现。寻求帮助是我的最后手段。
import heapq
heapq.nlargest(1, sentence.split(), key=len)