Python中如何用*args实现除法,运行代码返回0是什么原因?
问题原因分析
- 你运算结果为0的核心原因是结果变量初始值设置错误:如果将结果初始值设为
0,后续不管除以任何非0数值,运算结果永远是0,这是数学规则决定的。 - 少见情况是误用了整数除法
//,被除数小于除数时会向下取整得到0,这种情况改用普通除法/即可。
sum变量(结果变量)的取值规则
你需要先明确除法的业务逻辑,再确定初始值:
- 如果你要实现「多参数连除」(比如传入a、b、c,返回a/b/c的结果):
- 初始值取第一个传入的参数作为被除数,从第二个参数开始依次作为除数参与运算
- 代码示例:
def divide(*args): if len(args) == 0: raise ValueError("至少传入1个参数") res = args[0] for divisor in args[1:]: if divisor == 0: raise ZeroDivisionError("除数不能为0") res /= divisor return res # 测试:20 / 2 / 5 = 2.0 print(divide(20, 2, 5)) - 如果你要实现「固定值除以所有参数的和」:
- 初始值是你指定的固定被除数,先计算所有参数的和作为除数,再用固定值除以该和
- 代码示例:
def divide_by_sum(base, *args): args_sum = sum(args) if args_sum == 0: raise ZeroDivisionError("参数和不能为0") return base / args_sum # 测试:100 / (20 + 30) = 2.0 print(divide_by_sum(100, 20, 30))
你附上的代码截图如下:
内容的提问来源于stack exchange,提问作者LoserSheep
相关产品推荐
相关产品推荐

