gpt4 book ai didi

python - 所有参数的总和

转载 作者:太空宇宙 更新时间:2023-11-04 07:35:59 24 4
gpt4 key购买 nike

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

说明:

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

关于python - 所有参数的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35529022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com