这是一个代码战挑战,您必须返回给定参数的总和。
说明:
Calculate the sum of all the arguments passed to a function.
Note: If any of the arguments is not a finite number the function should return false/False instead of the sum of the arguments.
这是我的代码:
def sum_all(*args):
sum = 0
for str(num) in args:
if not num.isdigit():
return False
else:
int(sum) += num
return sum
目前我遇到这个错误:
File "", line 9
SyntaxError: can't assign to function call
请您参考如下方法:
该错误消息实际上发生在两个地方:
这里:
for str(num) in args:
这里:
int(sum) += num
您不能按照您尝试的方式强制转换为 string 和 int。
相反,您应该做的是将迭代保持为:
for num in args:
然后,您可以通过这样做来检查是否为数字:
if not str(num).isdigit():
最后,当您对所有内容求和时,如果您传递类似 [1, 2 , '3', 4](不是字符串形式的 3):
sum += num
因此,考虑到这一点,您的代码将如下所示:
def sum_all(*args):
sum = 0
for num in args:
if not str(num).isdigit():
return False
else:
sum += int(num)
return sum
但是,正如您在评论中指出的那样,有一个负数测试用例。这是上面代码中断的地方。因为,负数作为一个字符串:
"-343"
不要传递isdigit。
如果你把它放在你的解释器中,它会返回False:
"-343".isdigit()
因此,考虑到所有这些,当您删除代码时,您实际上可以进一步简化您的代码:
def sum_all(*args):
try:
return sum(int(i) for i in args)
except:
return False
演示:
print(sum_all(1,2,3,4,5))
输出:
15
