Python 如何在此处正确使用append?我按照指示正确吗?

Python 如何在此处正确使用append?我按照指示正确吗?,python,Python,编写一个函数find_longest_wordlist,它接受一个单词列表并返回列表中最长的单词。如果有多个最长的单词,即长度相同的单词,那么它应该返回其中的第一个单词,即列表中出现在其他单词之前的单词 编写一个程序,要求用户在一行中输入一些用空格分隔的单词。然后,您的程序应该用输入的单词创建一个列表。您可以使用内置的字符串拆分方法,并使用上述函数输出列表和最长的单词 样本运行: 输入几个单词,我会找到最长的: 敏捷的棕色狐狸跳过了懒狗 输入的单词列表为: ['The','quick','bro

编写一个函数find_longest_wordlist,它接受一个单词列表并返回列表中最长的单词。如果有多个最长的单词,即长度相同的单词,那么它应该返回其中的第一个单词,即列表中出现在其他单词之前的单词

编写一个程序,要求用户在一行中输入一些用空格分隔的单词。然后,您的程序应该用输入的单词创建一个列表。您可以使用内置的字符串拆分方法,并使用上述函数输出列表和最长的单词

样本运行:

输入几个单词,我会找到最长的:

敏捷的棕色狐狸跳过了懒狗

输入的单词列表为:

['The','quick','brown','fox','jumps','over','The','lazy','dog']

列表中最长的单词是:

快的

我的代码

    def find_longest_word():

    lizt=[]
    s = input("Please type a sentence and I will out put the longest word. ")

    for word in s:
        lizt.append(word)

    x = max(s.split(), key=len)



    print('')
    print('The list of words entered is:')
    print(lizt)
    print(s.split())
    print('')
    print('The longest word is:')
    print(x)

find_longest_word()
这个循环是错误的。s是一个字符串,s中的单词将遍历s中的每个字母,而不是其中每个空格分隔的单词。您只需要使用.split,您的变量lizt是不必要的

你可以做:

但这只会导致lizt与s.split相同。所以lizt=s.split会更简单

如果您真的想使用循环来实现此目的,可以尝试放弃使用max,而是执行以下操作:

max_word, max_len = None, 0
for word in s.split():
    if len(word) > max_len:
        max_word, max_len = word, len(word)
但是,如果只使用split和max,而不必自己编写显式循环,则会更简单、更具Python风格。

在s:中使用for word将导致Python遍历用户输入的字符串的每个字符。您应该使用lizt=s.split,它将自动生成一个str列表,这些str最初在输入中用一个空格分隔。这就是你想要的

请注意,您可以使用诸如s.split'\t'之类的参数使用不同的分隔符分割单词。例如:

sentence = "Split function"
sentence.split() # -> ["Split", "function"]
sentence.split("i") # -> ["Spl","t funct","on"]

关于append的用法,您似乎理解如何将项目追加到列表中,太棒了。

我认为,这段代码可以满足您的需要。字符串上的split方法创建单词列表。然后返回max函数,使用len函数作为键,可以得到列表中最长的单词。也就是说,它通过对每个应用len并返回最长值来查找列表中的最大值

s = "Please type a sentence and I will out put the longest word"
s_list = s.split()

def longest_word(s_list)

    return max(s_list, key=len) 

我不明白你的问题是什么?您得到了正确的输出吗?请注意,如果您没有得到预期的输出,您应该给出输出并显示您想要更改的内容。这使我们更容易帮助你。出于某种原因,我觉得我应该用一个循环来做这件事!谢谢你的意见。。有没有一种方法可以作为循环正确地执行此操作?@TYPKRFT请参阅我的编辑。可能海报使用的是Python 3,因此使用输入代替原始输入。谢谢,我编辑了此内容。
sentence = "Split function"
sentence.split() # -> ["Split", "function"]
sentence.split("i") # -> ["Spl","t funct","on"]
s = "Please type a sentence and I will out put the longest word"
s_list = s.split()

def longest_word(s_list)

    return max(s_list, key=len)