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