Function to sum multiple numbers
本问题已经有最佳答案,请猛点这里访问。
我刚接触到Python,开始学习执行函数。我开始添加数字,但我只能求和两个数字,如果我想求和更多,就需要编辑程序。这是我的密码
1 2 3 4 5 6 7 | def sum(num1,num2): return num1+num2 a=5 b=7 c=sum(a,b) print (c) |
现在,我想创建一个函数来求和任意数量的数字,而不需要编辑代码。我是这样做的:
1 2 3 4 5 6 7 8 9 10 11 12 | def sum(num1,num2): return num1+num2 a=int(input("what is the number you want to add?:")) ask="yes" while(ask=="yes"): b=int(input("what is the number you want to add?:")) c=sum(a,b) a=c ask=input("do you want to add another number?:") else: c=a print (c) |
号
这是可行的,但我认为应该有一个更简单的方法来实现这个功能…正确的?谢谢你的帮助!
您希望在函数中有一个
1 2 3 4 5 | def summ(num1, *args): total = num1 for num in args: total = total + num return total |
1 2 3 4 | >>> summ(1, 2, 3) 6 >>> summ(1, 2, 3, 4, 5, 6, 7) 28 |
。
可以使用变量参数接受任意数量的参数
1 2 3 4 5 | def my_sum(*args): total = 0 for val in args: total += val return total |
您还可以使用python的内置sum()添加它们:
1 2 3 4 5 6 7 | def my_sum(*args): return sum(args) >>> my_sum(1,2,3,4) 10 >>> my_sum(1,5,6,7.8) 19.8 |
。
首先要注意的是,python有一个本机
但是要了解更多关于python的信息,您可能希望使用
1 2 3 4 5 6 7 8 | from functools import reduce def mysum(*nums): return reduce(lambda x, y: x+y, nums) a, b, c = 1, 2, 3 res = mysum(a,b,c) # 6 |
通过构建一个列表,然后为您的函数提供信息,可以将其合并到您的逻辑中:
1 2 3 4 5 6 7 8 9 10 11 12 | lst = [] lst.append(int(input("what is the number you want to add?:"))) ask ="yes" while ask =="yes": lst.append(int(input("what is the number you want to add?:"))) ask = input("do you want to add another number?:") else: res = mysum(*lst) print(res) |
号
我建议您根据以下解释进行更新:
最后,这里是我对代码的建议:
1 2 3 4 5 6 7 8 9 | a = int(input("what is the number you want to add?:")) ask ="yes" while (ask =="yes"): b = int(input("what is the number you want to add?:")) a = sum([a,b]) ask = input("do you want to add another number?:") print (a) |
有几种方法可以添加不同数量的数字。首先,您可以使用列表和内置函数和:埃多克斯1〔6〕
如果不想使用列表,请尝试在内置和函数上编写自定义包装(最好不要重写内置名称):
1 2 3 4 | def my_sum(*args): return sum(args) my_sum(1, 2, 3) |
此外,这种用法是可能的:
1 2 | my_sum(2) # result is 2 my_sum() # result is 0 |
。
但是,如果您想要一个函数,它至少需要两个参数,请尝试以下操作:
1 2 3 4 | def my_sum(num1, num2, *args): return num1 + num2 + sum(args) my_sum(1, 2, 3) |
。