我怎样才能将每个元素除以除法函数中的下一个元素?我在调用函数中传递任意参数。提前致谢。
def add(*number):
numm = 0
for num in number:
numm =num+numm
return numm
def subtract(*number):
numm = 0
for num in number:
numm = num-numm
return numm
def division(*number):
#i am facing problem here
# numm = 1
# for num in number:
try:
if (z>=1 and z<=4):
def get_input():
print('Please enter numbers with a space seperation...')
values = input()
listOfValues = [int(x) for x in values.split()]
return listOfValues
val_list = get_input()
if z==1:
print("Addition of numbers is:", add(*val_list))
elif z==2:
print("Subtraction of numbers is:", subtract(*val_list))
elif z==3:
print("division of numbers is:", division(*val_list))
答案 0 :(得分:0)
我不确定我是否完全理解您的需求,但如果您希望使用参数division()
和计算100, 3, 2
致电(100 / 3) / 2
(答案:{{1}然后
16.6666
它与其他功能不相似,因为它们以def division(*number):
numm = number[0]
for num in number[1:]:
numm /= num
return numm
设置为零开始。将它设置为1将适用于乘法,但对于除法它不会有帮助。您需要将其设置为第一个参数,然后依次除以其余参数。
答案 1 :(得分:0)
在Python 3中,您可以使用functools库中的reduce
优雅地实现此目标。来自文档:
将两个参数的函数累加到序列项中, 从左到右,以便将序列减少到单个值。 例如,reduce(lambda x,y:x + y,[1,2,3,4,5])计算 ((((1 + 2)3)4)5)。左参数x是累计值和 正确的参数y是序列的更新值。如果 可选的初始化程序存在,它放在项目之前 计算中的序列,并在序列时作为默认值 是空的。如果没有给出初始化程序,序列只包含一个 item,返回第一个项目。
作为示例如何在代码中使用它,以便它看起来更好:
from functools import reduce
def get_input():
print('Please enter numbers with a space seperation...')
values = input()
listOfValues = [int(x) for x in values.split()]
return listOfValues
def add(iterable):
return sum(iterable, start=0)
# or reduce(lambda x, y: x + y, iterable, 0)
def subtract(iterable):
return reduce(lambda x, y: x - y, iterable, 0)
def division(iterable):
return reduce(lambda x, y: x / y, iterable, 1)
if __name__ == '__main__':
try:
print("Operation_type: ")
value = input()
operation_type = int(value)
except ValueError:
operation_type = -1
if (operation_type >= 1 and operation_type <= 4):
values = get_input()
if operation_type == 1:
print("Addition of numbers is: {}".format(add(values)))
elif operation_type == 2:
print("Subtraction of numbers is: {}".format(subtract(values)))
elif operation_type == 3:
print("division of numbers is: {}".format(division(values)))
else:
print("An invalid argument was specified: `operation_type` must be in range between 1 and 4")