关于实现含特殊规则的多参数求和函数的代码问题咨询
关于实现含特殊规则的多参数求和函数的代码问题咨询
嘿,我看了你写的代码和需求,发现里面有几个逻辑问题,咱们一步步把它修正过来~
首先先明确你的核心需求:
- 写一个支持任意数量参数的求和函数
- 规则:遇到数字10就排除它(不纳入求和),遇到数字5就从总和里减去它,其他数字正常累加
原代码的问题分析
你的代码里有几个关键问题导致它无法实现需求:
- 循环内过早使用return:每次循环里都写了
return,这会导致函数处理完第一个数字就直接终止了,后面的参数根本没机会被遍历处理 - continue的逻辑无效:在
if no ==10的分支里,你写了continue但紧接着就return sum(num),这不仅没跳过10,反而直接返回了所有参数的总和,完全违背了“排除10”的要求 - 分支逻辑顺序错误:因为第一个
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,正常加入总和
- 遇到10就用
- 等所有参数都处理完后,再返回最终的
total,这样就能正确实现你的需求啦
备注:内容来源于stack exchange,提问作者Ahmed El-Bialy
相关产品推荐
相关产品推荐

