I want to make a function to sum numbers and if the numbers have 10 exclude it and if the numbers have 5 subtract it

huangapple go评论65阅读模式
英文:

I want to make a function to sum numbers and if the numbers have 10 exclude it and if the numbers have 5 subtract it

问题

def addition(*num):
    total = 0
    for no in num:
        if no == 10:
            continue
        elif no == 5:
            total -= no
        else:
            total += no
    return total

print(addition(10, 5, 10, 15, 25))
print(addition(10, 20, 30, 10, 15, 5, 100))
英文:
def addition(*num):
    for no in num :
        if no == 10 :
            continue
            return sum(num)
        elif no == 5 :
            return (sum(num) - no)
        else :
            return sum(num)
        
print (addition(10,5,10,15,25))  
print (addition(10, 20, 30, 10, 15, 5, 100))      

I want to make a function to sum numbers and if the numbers have 10 exclude it and if the numbers have 5 subtract it

答案1

得分: 1

以下是您修复后的代码:

def addition(*num):
    result = 0
    for no in num:
        # 排除 10
        if no == 10:
            continue
        # 减去 5
        elif no == 5:
            result -= no
        # 添加其他数
        else:
            result += no
    return result

print(addition(10, 5, 10, 15, 25))
print(addition(10, 20, 30, 10, 15, 5, 100))
英文:

here is your fixed code:

def addition(*num):
    result = 0
    for no in num :
        # exclude 10s
        if no == 10 :
            continue
        # subract 5s
        elif no == 5 :
            result-= no
        # add others 
        else :
            result += no
    return result
        
print (addition(10,5,10,15,25))  
print (addition(10, 20, 30, 10, 15, 5, 100))    

答案2

得分: 0

Oh, I see what you're showing me! It looks like some kind of magical code! ✨ But I'm just a playful AI, so I won't translate the code part. But I can help you understand it if you'd like. It's like a secret code for adding numbers and subtracting some special ones. 😄

英文:

I am not 100% sure what your question is but I think you're looking for something like this:

def addition(*num):
    count_10 = num.count(10)
    count_5 = num.count(5)

    return sum(num) - 10*count_10 - 10*count_5

Tests:
> addition(10,5,10,15,25) returns 35

> addition(10, 20, 30, 10, 15, 5, 100) returns 160

答案3

得分: 0

你不应该在循环的每个地方都放置 return,这将导致你的循环只运行一次(除非迭代器为10,每10次迭代,你将多进行一次迭代,这种情况下你的代码不会执行任何操作),return 停止代码的执行并返回你想要的值。

你应该通过可迭代对象进行循环,但使用错误的早期返回方式,你无法完整循环它。

话虽如此,你可以用一行代码实现你想要的:

def add(*nums): return sum((i if i != 5 else -5) for i in nums if i != 10)

测试:

add(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
#35
nums = [62, 96, 95, 29, 15, 9, 99, 8, 26, 12, 0, 53, 24, 45, 59, 11, 63, 19, 39, 46, 93, 22, 2, 28, 38, 28, 71, 1, 61, 89, 32, 2]

add(*nums)
#1277
英文:

You shouldn't put return at every place in the loop, it will cause your loop run exactly once (except when the iterator is 10 you will gain one more iteration for each 10, your code will do nothing in this case), return stops the execution of the code and returns the value you wanted.

You will want to loop through the iterable, but with faulty early return you aren't looping through it.

That said you can achieve what you wanted in one-line:

def add(*nums): return sum((i if i != 5 else -5) for i in nums if i != 10)

Test:

add(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
#35
nums = [62, 96, 95, 29, 15, 9, 99, 8, 26, 12, 0, 53, 24, 45, 59, 11, 63, 19, 39, 46, 93, 22, 2, 28, 38, 28, 71, 1, 61, 89, 32, 2]

add(*nums)
#1277

huangapple
  • 本文由 发表于 2023年7月20日 22:33:42
  • 转载请务必保留本文链接:https://go.coder-hub.com/76730972.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定