函数 which returns 所有参数的总和

Function which returns Sum of all arguments

我想创建一个函数,其中 return 是所有传递参数的总和。

我在论坛上发现了类似的问题,但它不适用于最后一个案例。

def sum_all(*args):
    sum = 0

    for num in args:
        if not str(num).isdigit():
            return False
        else:
            sum += int(num)
    return sum

此代码适用于第一种和第二种情况,但 return 第三种情况为假。

sum_all(2,-3)
# -1
sum_all([3,4,5])
# 12
sum_all(1,2,[3,4,5])
# false 

我怎样才能让它发挥作用?在最后一种情况下使它成为 return 15? 谢谢!

如果是列表,递归调用函数即可,例如:

def sum_all(*args):
  sum = 0
  for num in args:
    if type(num) is list:
      sum += sum_all(*num)
    else:
      sum += int(num)
  return sum

可以用这个

def sum_all(*args):
    s = 0
    for a in args:
        if type(a)==list:
            s+=sum(a)
        else:
            s+=int(a)
    return s
print(sum_all(2,-3))
print(sum_all([3,4,5]))
print(sum_all(1,2,[3,4,5]))