如何在除法函数中将每个元素除以下一个元素? 我在调用函数中传递任意参数。提前谢谢。
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))
我不确定我是否完全理解您想要什么,但是如果您希望使用参数调用division()
100, 3, 2
并计算(100 / 3) / 2
(答案:16.6666
( 那么
def division(*number):
numm = number[0]
for num in number[1:]:
numm /= num
return numm
它与其他函数不同,因为它们以设置为零numm
开头。将其设置为 1 将适用于乘法,但对于除法则无济于事。您需要将其设置为第一个参数,然后依次除以其余参数。
在 Python 3 中,你可以通过使用 functools 库中的reduce
优雅地实现这一目标。从文档:
将两个参数的函数累积应用于序列项, 从左到右,以便将序列减少到单个值。 例如,reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]( 计算 ((((1+2)+3)+4)+5).左参数 x 是累积值,并且 正确的参数 y 是序列中的更新值。如果 存在可选的初始值设定项,它位于 序列在计算中,并在序列时充当默认值 为空。如果未给出初始值设定项并且序列仅包含一个 项,则返回第一项。
作为如何在代码中使用它的示例,使其看起来更好:
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")