Skip to main content
 首页 » 编程设计

python之所有参数的总和

2025年05月04日16lyhabc

这是一个代码战挑战,您必须返回给定参数的总和。

说明:

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