number = int(input('What number do you want to start with? '))
while number > 9:
decompose_helper, number = number, 0
while decompose_helper: # != 0 is implied
number += decompose_helper % 10
decompose_helper = decompose_helper // 10
print('Result is', number)
number = int(input('What number do you want to start with? '))
while number > 9:
decompose_helper, number = number, 0
while decompose_helper: # != 0 is implied
decompose_helper, remainder = divmod(decompose_helper, 10)
number += remainder
print('Result is', number)
iterable字符串方式:
number = input('What number do you want to start with? ')
while len(number) > 1:
number = str(sum(int(digit) for digit in number))
print('Result is', number)
有两种方法:数学方法和在python中使用字符串是iterable这一事实的方法。
数学方法使用模(
%
)和整数除(//
)将数字分解为数字:可以使用^{} 函数改进此代码:
iterable字符串方式:
这两个代码都不处理输入验证,因此如果用户输入的不是整数,则代码将崩溃。你可能需要处理这个问题。
我建议用数学方法,因为它更快。Timmings(除去
input
和print
)是:这可能不是最优化的,但它应该做到:
编辑:
如果FNT=19,list(str(FNT))返回['1','9'。
list comprehension[int(i)for i in list(str(FNT))]返回[1,9%(注意这些现在是整数)
要求一个数字的所有位数的和,您可以尝试这样的一行:
您可以重复应用,直到结果小于10:
res
现在存储结果。相关问题 更多 >
编程相关推荐