我写了这段代码:
def suma(num1,num2):
if(isinstance(num1,int)) or (isinstance(num2,int)) :
if num1<0 or num2<0:
print("iavo")
elif num1!=int(num1)or num2!=int(num2):
print("iao")
else:
suma_a = num1+num2
return suma_a
else:
print("ia")
我需要检查是否有num1
或num2
。如果没有,程序应打印出缺少参数。
答案 0 :(得分:2)
如果您没有指定默认值而用户没有提供两个参数,那么在您进入该功能之前,您将获得TypeError: suma() missing 1 required positional argument
:
def suma(num1=None,num2=None):
# make sure user has entered two args and both are numbers
if num1 is None or num2 is None:
return "You Must choose two numbers"
# rest of code
答案 1 :(得分:1)
如果您不发送这两个号码,该函数将抛出错误。没有办法在你的函数中省略一个参数。
如果你做了类似的事情:
def summ(a, b=None):
return a+b
然后你可以省略b,但是这会再次抛出一个不受支持的操作数错误,因为你无法添加一个数字和None。
如果您在某个其他函数的范围内调用该函数,或者在类中,您可以检查是否存在所有数字,您可以将其包装在try except块中并尝试处理错误,如图所示可能最愚蠢的例子:
try:
summ(1)
except:
print("Missing arguments, you can't add numbers and None in Python!"\
" Please send b.")
答案 2 :(得分:0)
This is what assertions are useful for.在您的声明中:
def suma(num1,num2):
pass
如果某人仅使用一个参数调用suma
,则该函数将抛出错误。
您可以通过声明参数的形式来添加额外的检查,如下所示:
def suma(num1,num2):
assert (num1 is not None)
assert (num2 is not None)
答案 3 :(得分:-1)
None
值在逻辑比较时返回False。
检查缺少两个参数的简便方法可能是:
def suma(num1,num2):
if not(num1 or num2):
print('Missing both arguments')
这是你最初提出的问题。
但正如其他人指出的那样,即使你只错过一个参数,你的函数也会抛出异常。
因此,如果您想检查缺少任何参数,您可以执行以下操作:
def suma(num1,num2):
if not(num1 and num2):
print('Missing at least one argument')
如果您希望参数的值为0,则无法正常工作,因为在逻辑检查中它们将评估为False。在这种情况下,您可以使用更正式的方法:
not(num1 is None or num2 is None)
not(num1 is None and num2 is None)