首页 > 解决方案 > 在函数中使用 *args 并得到此错误:“预期的字符串或类似字节的对象”

问题描述

我尝试在这两种情况下编写程序:

1.如果用户没有将他的字符串作为函数参数传递,使用输入函数来获取他的字符串。

2.如果用户将他的字符串作为函数参数传递,则将函数输入作为字符串。

从用户那里得到字符串后,计算单词的频率。所以,这是我的功能:

def words_frequency(*string_input):
    if not string_input:
        string_input = input("Please write your text: ")
    else:
        string_input = string_input
    input_words = re.sub('[:,:?/;.]', ' ', string_input)
    sorted_words = input_words.lower().split()
    sorted_words.sort()
    print(sorted_words)
    words_dict = {}
    for word in sorted_words:
        words_dict[word] = words_dict.get(word, 0) + 1
    return words_dict

str1 = "Lorem ipsum dolor sit amet, consectetur adipisicing elit. Lorem ipsum dolor sit amet, consectetur adipisicing elit."
print(words_frequency(str1))

我的功能中的所有东西都可以

我用常用的方法来测试我的函数来获取参数或获取输入,它们都在不同的情况下运行和工作。但我不能同时使用它们。

你能帮助我吗?

标签: pythonpython-3.xfunctionarguments

解决方案


如果我理解正确,我相信您希望能够使用字符串作为输入来运行 words_frequency() 函数,或者如果函数在没有输入的情况下运行,则让它要求输入。

您可以通过更改以下内容来实现此目的:

def words_frequency(*string_input):

至:

def words_frequency(string_input=""):

我希望这会有所帮助,也许可以看到这个链接来解释 python 中的函数参数:)

而且如果你坚持使用*string_input,一定要把它变成String。结果,你也可以使用这个方法:

def words_frequency(*string_input):
    if not string_input:
        string_input = input("Please write your text: ")
    else:
        string_input = str(string_input)

推荐阅读