Python:根据给定的参数给出答案
谁能帮帮我吗 我需要定义一个函数,其中用户给出2个参数,但所有参数都已定义。 如果用户给出1个参数,程序将其平方。如果用户给出2,则将它们相乘。如果未给出任何值,程序将返回“none” 我的解决方案:Python:根据给定的参数给出答案,python,arguments,default,Python,Arguments,Default,谁能帮帮我吗 我需要定义一个函数,其中用户给出2个参数,但所有参数都已定义。 如果用户给出1个参数,程序将其平方。如果用户给出2,则将它们相乘。如果未给出任何值,程序将返回“none” 我的解决方案: def area(a=1,b=1): if not a or b: return 'none' elif not b: return a**2 else: return a*b 但不知怎么的,这是行不通的。请帮忙? 另外,对于布局很抱歉,我是这个站点的新手而
def area(a=1,b=1):
if not a or b:
return 'none'
elif not b:
return a**2
else:
return a*b
但不知怎么的,这是行不通的。请帮忙?
另外,对于布局很抱歉,我是这个站点的新手而不是将args的初始值声明为
1
,如果将其声明为None
则更好。现在,如果未给出b
,我们可以使用嵌套的if
语句来解决您的问题
此程序附呈供您参考
def area(a=None,b=None):
if b is None:
if a is None:
return 'none'
else:
return a**3
else:
return a*b
print(area(2))
print(area(2,1))
print(area())
程序将打印
4
2
none
正如通常所需要的一样,我会使用python的awesome变量参数列表特性,并在它的
len
上进行分支。在行动中看到它:
>>> def func(*args):
... return len(args), args
...
>>> func(1)
(1, (1,))
>>> func(1,2,3)
(3, (1, 2, 3))
但在您的情况下,我只会使用默认的None
参数并“滥用”一点对称性:
>>> def area(a=None,b=None):
... if b is None: b=a # a*a == a**2
... return None if a is None else a*b # hackish alternative: return a and a*b
如果传递了三个参数,会发生什么?在这种情况下,这里有一个抛出异常的解决方案
def area(*args):
if not args:
return None
elif len(args) == 1:
return args[0]**2
elif len(args) == 2:
return args[0] * args[1]
else:
raise RuntimeError("Invalid number of arguments.")
您正在将
a
和b
设置为始终具有一个值。将它们更改为零。但是,只有在调用函数时将a
设置为0,才能使b
而不是a
为零。None
可能是比0更好的默认值。否则,区域(0)将返回“无”,而不是0,区域(0,0)也将返回“无”。我想您应该知道,对一个数字进行立方运算将是a**3
,而不是a**2
…?很好!谢谢你指出这一点。建议:如果不是b:,你应该写,如果b不是None:
。当用户调用区域(0,0)
时会发生什么情况?@jme很好,但如果b为None,则必须是。你在尝试双重否定谢谢!这是非常有用的。我想我可以跳过双if步骤,但这似乎是最简单的方法。@L.R.不客气。通过使用布尔操作数的短路求值,可以跳过双if步骤。这是一个容易的话题。请阅读更多关于