重复添加数字的位数,直到输出为一个位数



我有一个两位数(例如29((,并希望将其进一步减少为一位数。我怎么能在python中做到这一点?我可以在while循环中使用函数吗?例如

29 -> 11 -> 2

结果:[29,11,2]

x=input('Input digit: ')
result=0
box=[]

def add_two(x):
bz=[]
for i in str(x):
bz.append(int(i))
s=sum(bz)

return s

box=[]    
a=0
while len(str(x))>1:

IIUC,您希望通过重复执行十和单位的加法,将两位数(29(减少为一位数,直到数字小于10。

注意。我在这里使用整数,如果从字符串开始,首先转换为int:x = int(x)

让我们使用divmod乘以10来获得两个组件:

divmod(29, 10)
# 2, 9

和CCD_ 3它们:

sum(divmod(29, 10))
# 11

既然我们有了逻辑,让我们重复一遍:

x = 29
def reduce(x):
return sum(divmod(x,10))
while x>9:
x = reduce(x)

print(x)
# 2   # 2+9 -> 11 ; 1+1 -> 2
作为单个函数
def reduce_until(x):
while x>9:
x = sum(divmod(x,10))
return x
reduce_until(29)
# 2
任何大小的输入的通用函数:
def reduce_until(x):
while x>9:
total = 0
while x>0:
x,r = divmod(x, 10)
total += r
x = total
return x
reduce_until(56789)
# 56789 -> 35 -> 8
reduce_until(99999999999992)
# 99999999999992 -> 119 -> 11 -> 2
import math
dob_d = 29
while not (0 <= dob_d <= 9):
n = 0
for i in range(math.ceil(math.log10(dob_d))):
n += int(dob_d / (10 ** i) % 10)
dob_d = n
print(dob_d)

相关内容

最新更新