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