给定自然数 n,编写python函数,求其各位数字之和,如数 1234 各位数字之和为10。编写函数,重复上述过程,直至得到 1~9 之间的某个数。
时间: 2023-06-18 13:05:27 浏览: 114
可以先编写一个函数 `digit_sum`,用于计算一个自然数各位数字之和,如下所示:
```python
def digit_sum(n):
return sum(int(d) for d in str(n))
```
接下来,可以编写一个函数 `repeat_digit_sum`,用于重复执行 `digit_sum` 直至得到 1~9 之间的某个数,如下所示:
```python
def repeat_digit_sum(n):
while n > 9:
n = digit_sum(n)
return n
```
这里使用了一个 while 循环,如果计算出来的数字大于 9,就继续执行 `digit_sum`,直到得到 1~9 之间的某个数。最后返回这个数即可。
完整代码如下:
```python
def digit_sum(n):
return sum(int(d) for d in str(n))
def repeat_digit_sum(n):
while n > 9:
n = digit_sum(n)
return n
# 测试代码
print(repeat_digit_sum(1234)) # 输出 1
print(repeat_digit_sum(987654321)) # 输出 9
print(repeat_digit_sum(1111111)) # 输出 1
```
相关问题
编写python代码,实现:用户给定自然数 n,编写函数,求其各位数字之和,如数 1234 各位数字之和为10。编写函数,重复上述过程,直至得到 1~9 之间的某个数
可以使用递归函数来实现该功能,如下所示:
```python
def digit_sum(n):
"""计算n各位数字之和"""
if n < 10:
return n
else:
return digit_sum(n // 10) + n % 10
def repeat_sum(n):
"""重复计算各位数字之和,直至得到1~9之间的某个数"""
while n > 9:
n = digit_sum(n)
return n
```
使用示例如下:
```python
n = 1234
print(digit_sum(n)) # 输出10
print(repeat_sum(n)) # 输出1
```
阅读全文