Python 3异常:TypeError:函数缺少1个必需的位置参数:';单词';
我的函数需要一个参数字,但如果没有参数,我希望程序不会崩溃Python 3异常:TypeError:函数缺少1个必需的位置参数:';单词';,python,function,exception,arguments,try-catch,Python,Function,Exception,Arguments,Try Catch,我的函数需要一个参数字,但如果没有参数,我希望程序不会崩溃 def get_count(words): try: consonants_str = "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ" vowels_str = "aeiouAEIOU" consonants_ls = [] vowels_ls = [] words_ls = [] resul
def get_count(words):
try:
consonants_str = "bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ"
vowels_str = "aeiouAEIOU"
consonants_ls = []
vowels_ls = []
words_ls = []
result = {"vowels": 0, "consonants": 0}`
for element in consonants_str:
consonants_ls.append(element)
for element in vowels_str:
vowels_ls.append(element)
if type(words) != type(None):
for element in words:
words_ls.append(element)
for element in words_ls:
if element in vowels_ls:
result["vowels"] += 1
if element in consonants_ls:
result["consonants"] += 1
else:
continue
else:
result["vowels"] = 0
result["consonants"] = 0
except TypeError:
result["vowels"] = 0
result["consonants"] = 0
answer = {"vowels": result["vowels"],"consonants": result["consonants"]}
return answer`
如果我用
print(get_count())
我希望程序不会显示标题中的错误。例外情况应该出现在get_count
的def
中,因为它应该是一个关闭的文件。我不在同一个文件中执行,因此异常应该独立于其他文件
我希望你明白我的意思
谢谢你的回答!
NoAbL当您声明要使用
def(words)
调用名为words
的参数时,您不是在向函数传递参数,请像这样调用函数或使用所需的任何字符串输入
print(get_count('AAAABBBKDKDKDKDA'))
如果希望程序在未传递任何参数时退出,请执行此操作(记住单词现在是元组)
肾盂道:
>>> vowels = 'aeiou'
>>> def get_count(words):
... words = words.lower()
... total_vowels = sum(words.count(x) for x in vowels)
... return {'vowels':total_vowels, 'consonants':len(words)-total_vowels}
...
>>> get_count('AAAABBBKDKDKDKDA')
{'consonants': 11, 'vowels': 5}
使用集合。计数器:
>>> def get_count(words):
... words = words.lower()
... my_counter = collections.Counter(words)
... total_vowels = sum(my_counter.get(x,0) for x in 'aeiou')
... return {'vowels':total_vowels, 'consonants':len(words)-total_vowels}
...
>>> get_count('AAAABBBKDKDKDKDA')
{'consonants': 11, 'vowels': 5}
您可以使用可选参数 例如:
def info(name, age=10):
是一个具有可选参数age
的函数
有效的信息调用包括:
info("Roy")
info("Roy", 15)
在您的情况下,您只需将功能更改为:
def get_count(words=[]): # Assuming words is a list. If it is a string you can use words=""
因此,如果不传递任何参数,默认情况下,函数将单词
作为空的列表
奖金:
我找到了
for element in consonants_str:
consonants_ls.append(element)
for element in vowels_str:
vowels_ls.append(element)
你不需要这个。相反,您可以这样做:
consonants_ls = list(consonants_str)
vowels_ls = list(vowels_str)
我知道,如果我不传递参数,我需要一个转义序列或类似的东西。use
def get_count(*args)
args是一个元组,它允许你不传递任何参数或传递任何数量的未命名参数。你可以使用任何名称,如*可选,但社区使用的是*args
,就我个人而言,我从未见过任何使用不同名称的标准代码。但重要的是,您必须了解python在这方面允许的自由度如果我将def get_count(words)
更改为def get_count(*words)
,输出总是{“辅音”:0,“元音”:0}
,因为单词不再是字符串,而是包含字符串的元组,因此,对于words[0]中的元素应该是,
,如果您只关心传递的第一个字符串(可以将多个字符串传递到函数中),那么它现在就可以工作了。很抱歉,我不能把绿钩给两个人,所以我把它给了第一个回答的人,他帮了我很多。这并不意味着其他答案不那么好。
consonants_ls = list(consonants_str)
vowels_ls = list(vowels_str)