繁体   English   中英

如何按循环顺序执行数字总和?

[英]How to perform sum of sum of digits in cyclic order?

示例:如果我的输入是 582109,那么 output 应该是 (5+8+2+1+0+9)+(8+2+1+0+9)+(2+1+0+9)+(1 +0+9)+(0+9)+(9)=25+20+12+10+9+9=85

代码:

def getSum(n):
    sum = 0
    while (n != 0):
        sum = sum + int(n % 10) 
        n = int(n/10)
    return sum

n = int(input("Number : "))
print(getSum(n))

这段代码只是给出输入中所有数字的总和。 如示例中所述,如何使其以循环顺序计算数字总和的总和?

尝试这个:

def add_digits(string):
    result = 0
    for i in range(len(string)):
        for char in string[i:]:
            result += int(char)
    return result

print(add_digits("582109"))

为防止数字重复两次,您可以考虑每个数字在最终总和中出现的次数:

def getSum(n):
    n_string = str(n)
    sum, mult = 0, 1
    for c in n_string:
        sum += mult * int(c)
        mult += 1
    return sum

getSum(582109)

这是另一个解决方案,使用与Dallan 的答案相同的算法,但使用enumerate作为理解,并从TheOneMusic 的答案中获得一些灵感:

def add_digits_cyclic(digits):
    return sum(i * int(c) for i, c in enumerate(digits, 1))

print(add_digits_cyclic('582109'))  # -> 85

求和

[英]Adding up the sum of digits

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM