要获得(正整数)数字的最后一位,可以计算模:last_digit = n % 10
数字的剩余部分(不包括最后一位)为:
^{pr2}$
理论上这应该足够分割一个数字并加上数字: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))