python return语句的主要问题

时间:2019-05-21 16:41:17

标签: python-3.x

函数可查找直到(包括)N的所有数字之和,该数字是x或y的倍数。

我试图将return语句放在不同的缩进位置,但仍然没有希望

def multipleSum(N,x,y):
    z=0
    a=0
    for i in range(0,N+1):
        if i%x==0:
            z=z+i   
        elif i%y==0:
            a=a+i
        else:
            s=z+a
    return s

测试案例:

  

multipleSum(10,2,3)== 42

预期结果为 42 ,实际结果为 15

1 个答案:

答案 0 :(得分:0)

代码:

def multipleSum(N,x,y):
    total=0
    for i in range(N+1): # No need to mention 0(zero), as range starts from '0'
        if i % x == 0 or i % y == 0: # No need to use if and elif, better to use 'or' instead
            total+=i
    return total

另一种方式:

def multipleSum(N,x,y):
    return sum(map(lambda v: v if v%x==0 or v%y==0 else 0, range(N+1)))

输出:

>>> multipleSum(10, 2, 3)
42