啥也不说了,先来代码~~~
def cal_add(*args): """N个数字的和""" sum_res = 0 # 利用了0加任何数字都等于该数字本身的特性为初始位置赋值 for i in args: sum_res += i return sum_res def cal_sub(*args): """N个数字的差""" sub_res = args[0] # 求差时,由于数字没有像和那样的特殊逻辑,所以先取了索引为0位置的value作为初始位置 for i in args: sub_res -= i return sub_res + args[0] # 最后加args[0] 是因为 for循环中会重复减一次args[0] # 举个栗子:有a,b,c三个数字,在for循环中处理逻辑如下:a-b, b-c, c-a 实际上,我们只需要a-b-c,所以最后结果要把a加回来 def cal_mul(*args): """N个数字的积""" mul_res = 1 # 利用了1乘以任何数字都等于该数字本身的特性为初始位置赋值 for i in args: mul_res *= i return mul_res def cal_div(*args): """N个数字的商""" div_res = args[0] for i in args: if args[0] == 0 and i != 0: # 0除以任何非0的数,都等于0 return 0 elif i != 0: # 保证除数不能为0 div_res /= i else: return print("除数不能为0,请检查入参") return div_res * args[0] # 结果处理与求差的结果处理类似
做完后,感觉其中比较难处理的是差和商,和与积可以利用0和1本身的特性给定开始的第一个值,但是差与商没有这种特殊逻辑,就需要在代码中自己处理了