【发布时间】:2016-09-17 21:24:34
【问题描述】:
提示:编写一个程序,将整数中的所有数字相加。如果结果总和超过一位,请继续重复,直到总和为一位。例如,数字 2345 的总和为 2+3+4+5 = 14,这不是一位数,因此请重复 1+4 = 5,这是一位数。
这是我到目前为止的代码。它适用于第一部分,但我无法弄清楚如何让它重复,直到总和为一位数。我很确定我应该将已有的代码嵌套在另一个 while 语句中
n = int(input("Input an integer:"))
sum_int=0
while float(n)/10 >= .1:
r= n%10
sum_int += r
n= n//10
if float(n)/10 > .1: print(r, end= " + ")
else: print(r,"=",sum_int)
这是代码的示例输出
输入一个整数:98765678912398
8 + 9 + 3 + 2 + 1 + 9 + 8 + 7 + 6 + 5 + 6 + 7 + 8 + 9 = 88
8 + 8 = 16
1 + 6 = 7
【问题讨论】:
-
似乎是使用递归的绝佳机会。
-
使用 if 语句和
len() -
你为什么要让你的程序做所有这些算术?把一个数字变成一个字符串,然后把每个字符变成一个数字。
-
对于终止条件:'一位十进制数字'的数值可以说什么?如何在上下文中使用它?这可以而且可能应该在不使用浮点数或字符串的情况下解决。
-
没有这样的一位数了吗?而 n>9
标签: python