Python函数将数字减少到单个数字

时间:2015-10-30 14:17:38

标签: function python-2.7 math while-loop

因此,此函数将值减小到单个数字的方式是在循环中连续添加值的数字,直到它的值为9或更小。当两个数字加在一起等于10时会出现问题,然后通过为值1加1 + 0来进一步减少。

def rts(value):
   VALUE_STR = str(value)
   ANSWER = "0"
   while value > 9:
      value = int("0")
      for ch in VALUE_STR:
         ch = int(ch)
         value += ch
      ANSWER = str(value)
   return ANSWER

我无法真正显示每个说法的输出但是当我打印出来时,无论何时传递一个数字值,当它被添加等于10时,它将陷入无限循环。

示例1:
91
9 + 1 = 10
开始无休止的循环

示例2:
64个
6 + 4 = 10
开始无休止的循环

与其他数字一起使用的方式

示例1:
97
9 + 7 = 16
16个
6 + 1 = 7
答案= 7

示例2:
45个
4 + 5 = 9
答案= 9

以下是需要类似功能的任何人的固定代码。

def rts(value):
   VALUE_STR = str(value)
   ANSWER = "0"
   while value > 9:
      value = int("0")
      for ch in VALUE_STR:
         ch = int(ch)
         value += ch
      ANSWER = str(value)
      VALUE_STR = str(value)

   return ANSWER

3 个答案:

答案 0 :(得分:2)

在第

for ch in VALUE_STR:

您在循环的每次运行中反馈原始字符串。因此,任何需要多次迭代的执行都会产生无限循环。

答案 1 :(得分:2)

此功能以不同的方式执行相同操作。它遍历数字中的数字并对它们求和。然后检查结果是否为单位数。如果没有,它会递归调用自己。

def rts(input_number):
    input_number = str(input_number)
    value = 0

    for x in input_number:
        value += int(x)

    if (value > 9):
        return rts(value)
    else:
        return value

答案 2 :(得分:0)

我的场景是动态的,但它提供了预期的输出:

nlist = input("Enter the number: ")
val = 0
num = 0
for n in nlist:
    val = val + int(n)
for i in str(val):
    num += int(i)
print("Reduce number by sum is: ", num)

输出:

输入数字:46

4 + 6 = 10

1 + 0 = 1

总和减少数为:1