You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何用*args实现除法,运行代码返回0是什么原因?

问题原因分析
  • 你运算结果为0的核心原因是结果变量初始值设置错误:如果将结果初始值设为0,后续不管除以任何非0数值,运算结果永远是0,这是数学规则决定的。
  • 少见情况是误用了整数除法//,被除数小于除数时会向下取整得到0,这种情况改用普通除法/即可。
sum变量(结果变量)的取值规则

你需要先明确除法的业务逻辑,再确定初始值:

  1. 如果你要实现「多参数连除」(比如传入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))
    
  2. 如果你要实现「固定值除以所有参数的和」:
    • 初始值是你指定的固定被除数,先计算所有参数的和作为除数,再用固定值除以该和
    • 代码示例:
    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:06:03