要获得(正整数)数字的最后一位数,您可以计算模数:
last_digit = n % 10
该数字的其余部分(不包括最后一个地方)是:
rest = (n - last_digit) / 10
理论上这应该足以分割数字并添加数字:
def sum_digits(n):
if n < 10:
return n
else:
last_digit = n % 10
rest = n // 10
# or using divmod (thanks @warvariuc):
# rest, last_digit = divmod(n, 10)
return last_digit + sum_digits(rest)
sum_digits(1969) # 25
如果你想要递归地应用这个值,直到你有一个小于10的值,你只需要调用这个函数,只要不满足该条件:
def sum_sum_digit(n):
sum_ = sum_digit(n)
if sum_ < 10:
return sum_
else:
return sum_sum_digit(sum_)
sum_sum_digit(1969) # 7
如果您有兴趣另一种计算数字总和的方法是将数字转换为字符串,然后添加字符串的每个字符:
def sum_digit(n):
return sum(map(int, str(n)))
# or as generator expression:
# return sum(int(digit) for digit in str(n))