我创建了一个python函数:
def is_cayley_table(table):
try:
if type(table) is not list:
return False
else:
n = len(table)
poss_values = range(0,n)
for i in range(0,n):
if len(table[i]) != n:
return False
for j in range(0,n):
if type(table[i][j]) is int and table[i][j] in poss_values:
return True
else:
return False
except TypeError:
return False
然后我用INVALID参数调用该函数:
is_cayley_table([1, 1, 0], [0, 1, 2], [1, 2, 2])
我希望函数返回" False",但此刻我得到了这个:
File "C:/Users/Jack/OneDrive/Documents/comp_project.py", line 27, in <module>
is_cayley_table([1, 1, 0], [0, 1, 2], [1, 2, 2])
TypeError: is_cayley_table() takes 1 positional argument but 3 were given
如果有人可以提供帮助,我将非常感激。
杰克
答案 0 :(得分:1)
你正在捕捉函数中的类型错误,但问题在于调用函数;这不能在函数本身内捕获。
我不确定为什么你需要能够使用无效参数调用该函数,但支持这种方法的一种方法是接受任何带有*args
语法的参数,然后检查你拥有的内容: / p>
def is_cayley_table(*args):
if len(args) != 1:
return False
table = args[0]
...
答案 1 :(得分:0)
首先,你不能提供一个参数多于声明参数的函数。这是最大的问题。
因此,如果你为函数提供了1个参数,你可以输入类似
的内容is_cayley_table(([1, 1, 0], [0, 1, 2], [1, 2, 2]))
它将按预期工作