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

关于实现含特殊规则的多参数求和函数的代码问题咨询

关于实现含特殊规则的多参数求和函数的代码问题咨询

嘿,我看了你写的代码和需求,发现里面有几个逻辑问题,咱们一步步把它修正过来~

首先先明确你的核心需求:

  • 写一个支持任意数量参数的求和函数
  • 规则:遇到数字10就排除它(不纳入求和),遇到数字5就从总和里减去它,其他数字正常累加

原代码的问题分析

你的代码里有几个关键问题导致它无法实现需求:

  1. 循环内过早使用return:每次循环里都写了return,这会导致函数处理完第一个数字就直接终止了,后面的参数根本没机会被遍历处理
  2. continue的逻辑无效:在if no ==10的分支里,你写了continue但紧接着就return sum(num),这不仅没跳过10,反而直接返回了所有参数的总和,完全违背了“排除10”的要求
  3. 分支逻辑顺序错误:因为第一个if分支里已经有return,后面的elif永远不会被执行到

修正后的代码实现

按照你的需求,正确的思路应该是先初始化一个总和变量,然后逐个遍历所有传入的数字,根据规则更新总和,最后返回结果:

def addition(*num):
    total = 0
    for no in num:
        if no == 10:
            # 遇到10就跳过,不加入总和
            continue
        elif no == 5:
            # 遇到5就从当前总和里减去它
            total -= no
        else:
            # 其他数字正常累加到总和中
            total += no
    return total

# 测试示例
print(addition(10,5,10,15,25))  # 计算过程:15+25 -5 = 35,输出35
print(addition(10, 20, 30, 10, 15, 5, 100))  # 计算过程:20+30+15+100 -5 = 160,输出160

代码说明

  • 用total = 0初始化总和,确保从0开始累加
  • 遍历每个参数时:
    • 遇到10就用continue跳过该数字,不做任何处理
    • 遇到5就执行total -= no,把5从总和里减去
    • 其他数字执行total += no,正常加入总和
  • 等所有参数都处理完后,再返回最终的total,这样就能正确实现你的需求啦

备注:内容来源于stack exchange,提问作者Ahmed El-Bialy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 08:08:12