2014-11-23 52 views
3

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

试图字的lenghts比较在森泰斯当我击中墙壁。我是一名使用python 5周的学生。

回答

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' 
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) 
1

你会在正确的方向。你的代码大部分看起来不错,你只需要完成逻辑来确定哪个是最长的单词。由于这似乎是一个家庭作业问题,我不想给你直接的答案(尽管其他人对我这样的学生没有任何用处),但有多种方法可以解决这个问题。

你正确地得到每个单词的长度,但是你需要什么来比较每个长度对?试着大声说出问题,以及你如何亲自解决问题。我认为你会发现你的英文描述很好地翻译成一个Python版本。

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

+0

谢谢你的回答。这正是我陷入困境的地方。我知道我想做什么,我只是不知道如何实现它。寻求帮助是我的最后手段。 – Mixtli 2014-11-23 20:53:27

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 

或者使用try /除建议由乔恩·克莱门茨:

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

Python 3.4有一个['default'关键字参数](https://docs.python.org/3.4/library/functions.html#max),当iterable为空时返回。 – 2014-11-23 20:23:01

+0

@kroolik真的,没有看到python3标记 – 2014-11-23 20:27:50

+0

感谢澄清他们两个 – Mixtli 2014-11-23 20:30:49

1

您可以使用nlargest从heapq模块

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

非常好....... – pad 2014-11-23 21:33:08