编写一个函数filter_long_words(),该函数接受单词列表和整数n,并返回长度大于n的单词列表

2024-10-03 02:33:59 发布

您现在位置:Python中文网/ 问答频道 /正文

每当我运行这段代码时,它只会给我一个空白列表,我想知道我做错了什么。我试图打印一个超过n的单词列表。当我尝试运行更新的代码时,它只打印我输入的单词列表中的第一个单词。在

def filterlongword(string,number):

    for i in range(len(string)):
        listwords = []
        if len(string[i]) > number:
            listwords.append(string[i])

        return listwords 


def main():
    words = input("Please input the list of words: ")
    integer = eval(input("Please input an integer: "))

    words1 = filterlongword(words,integer)

    print("The list of words greater than the integer is",words1)

main()  

Tags: the代码number列表inputstringlenmain
3条回答
  • 在循环之前初始化listwords
  • 在循环之后返回listwords
  • 将输入字符串拆分为单词列表
def filterlongword(string,number):
    listwords = []
    for i in range(len(string)):
        if len(string[i]) > number:
            listwords.append(string[i])
    return listwords

还有一个更好的版本使用list comprehension

^{pr2}$

要将输入字符串拆分为单词列表,请使用

words = input("Please input the list of words: ").split()
def listing(guess, number):

    new_list = []

    for i in range(len(guess)):
        if len(guess[i]) > number:
            new_list.append(guess[i])

    print (new_list)

list1 = input("take input: ")

list = list1.split(",")

def main():
    global list, integer1
    integer = input()
    integer1 = int(integer)
    listing(list, integer1)

main()

**尝试此代码..这将起作用,使用分隔符来形成输入列表**

更好的是

def filterlongword(string,number):
    return filter(lambda word:len(word)>number, string)
    # or: return [w for w in string if len(w) > number]

相关问题 更多 >