根据条件查找范围内的总和和数字总和

时间:2018-02-06 21:28:40

标签: python sum integer range

我想创建一个函数my_sum_div(a, b, div=10),它将计算从ab的数字之和,打印出这个总和,以及{{1}类型的所有中间总和可以被a+(a+1)+(a+2)+(a+3)整除的。 我希望该程序的工作方式如下:

div

输出应如下所示:

    my_sum_div(1, 10, 2)

现在我已经这样做了:

sums divisible by 2:
6
10
28
36
sum of numbers between 1 and 10 is: 55

我已经尝试了几个小时。我知道我的代码只检查 def my_sum(a, b): print("sum of numbers between", a," and", b," is", sum(i for i in range(a, b+1))) def my_sum_div(a, b, div = 3): print("sums divisible by", div,":") l = [] s = "," x = sum(i for i in range(a, b+1) for i in range(a, b+1): if (i%div==0): l.append(str(i)) print(s.join(l)) print("sum of numbers between", a, " and", b, " is", sum(i for i in range(a, b + 1)) 之间的(a, b+1)可以被div整除的数字,但是我如何才能使函数计算并打印所有可被div整除的中间和?我的第一个函数只计算给定间隔中所有整数的总和。我现在希望后续函数计算在给定间隔内可被div整除的所有中间和,并打印所有这些。

提前谢谢。

3 个答案:

答案 0 :(得分:1)

您可以将结果创建为自定义generatoryield

def my_sum_div(start, end, d):
    my_sum = 0
    for x in range(start, end+1):
        my_sum += x 
        if my_sum % d == 0:
            yield my_sum
    # yield my_sum     # <-- uncomment this if you want the total 
                       #     sum to be returned at the end

使用上面的生成器,您可以一次生成一个结果,next()为:

>>> my_generator = my_sum_div(1, 10, 2)
>>> next(my_generator)
6
>>> next(my_generator)
10
>>> next(my_generator)
28

或者您可以一次性获得所有结果的列表:

>>> list(my_sum_div(1, 10, 2))
[6, 10, 28, 36]

带有注释版代码的结果,最终产生总计my_sum

>>> list(my_sum_div(1, 10, 2))
[6, 10, 28, 36, 55]

在Python 3中,您可以将两个变量中间值和总和的总和存储为:

>>> *intermediate_sum, total_sum = list(my_sum_div(1, 10, 2))
# where: 
#  - `intermediate_sum` will hold the value `[6, 10, 28, 36]`
#  - `total_sum` will hold the value `55`

对于旧版本的Python,您需要执行以下操作:

>>> sum_list = list(my_sum_div(1, 10, 2))
>>> intermediate_sum, total_sum = sum_list[:-1], sum_list[-1]

答案 1 :(得分:1)

User.update(
{
    'topics': sequelize.fn('array_append', sequelize.col('topics'), topicId),
},
{where: {uuid: id}})

输出:

def my_sum_div(a,b,div):
        sum = 0
        for i in range(a, b + 1):
            sum += i
            if sum % div == 0:
                print(sum)
        return sum

print(my_sum_div(1,10,2))

答案 2 :(得分:0)

这是我的实施

def my_sum(a, b):
    return sum(i for i in range(a, b+1)))

def my_sum_div(a, b, div = 3):
    print("sums divisible by", div,":")

    l = []
    s = ","
    test = 0
    for i in range(a, b+1):
        test += i
        if (test%div==0):
            l.append(str(test))

    print(s.join(l))

    print("sum of numbers between", a, " and", b, " is", my_sum(a, b))