如何在整数中添加数字

时间:2015-09-22 18:28:14

标签: python int add

我是python中的完整(GCSE)初学者。 我试图在整数中添加数字。我的变量FNT每次出现一个不同的数字(取决于我之前输入的内容),然后我需要添加数字。例如。  FNT = 19  我现在需要这个数字 -  1 + 9 = 10        1 + 0 = 1数字需要保持自我添加,直到它们是单个数字,但每次数字可能不同。非常感谢所有帮助,但正如我所说,我是一个完全的初学者,可能无法理解任何过于复杂的东西,所以有人知道如何做到这一点吗?

5 个答案:

答案 0 :(得分:2)

有两种方法:数学方法和使用字符串在python中迭代的事实的方式。

  • 数学方法使用modulo(%)和积分除法(//)将数字分解为数字:

    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)
    

    您可以使用divmod功能改进此代码:

    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)
    
  • 可迭代的字符串方式:

    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)
    

这两个代码都没有处理输入验证,所以如果你的用户输入的不是整数,代码就会崩溃。你可能需要处理它。

我建议使用数学方法,因为它更快。 Timmings(删除inputprint)是:

>>> timeit.timeit('math_way("4321234123541234")', setup='from __main__ import math_way', number=10000)
0.06196844787336886
>>> timeit.timeit('str_way("4321234123541234")', setup='from __main__ import str_way', number=10000)
0.10316650220192969

答案 1 :(得分:0)

要对数字的所有数字求和,您可以尝试这样的单行:

sum(int(chr) for chr in str(number))

您可以反复应用,直到结果小于10:

res = number
while True:
  res = sum(int(chr) for chr in str(res))
  if res < 10:
    break

res现在存储您的结果。

答案 2 :(得分:0)

这可能不是最优化的,但应该这样做:

def addThem(FNT):
    while FNT >= 10:
        FNT = sum([int(i) for i in list(str(FNT))])
    return FNT

编辑:

如果FNT = 19,list(str(FNT))返回['1','9']。

list comprehension [int(i)for i in list(str(FNT))]返回[1,9](注意这些现在是整数)

答案 3 :(得分:0)

有更好的方法可以做到这一点,但作为编程练习,这应该会给你一些见解。

while digits>10:
t=0
for c in str(digits):
    t+=int(c)
digits=t        

将输入数字转换为字符串并迭代数字,重复直到答案为单个数字。

答案 4 :(得分:0)

这是在java中完成的,但它仍然与python中使用的逻辑相同。

我使用split来分割数字,然后我将每个分割数转换为整数,并将它们相加。我现在使用if statement来检查总和是否大于或等于10.如果是,那么我再次重复该过程。

这是程序

    String num = "19"; //you can make use of any value here
    String array1[] = num.split("");
    int sum = 0;
    for (int i = 1; i <= num.length(); i++) {
        sum = sum + Integer.parseInt(array1[i]); //converting each element to an integer then sum it up.
    }

    if (sum >= 10) {
        String newnum = sum + ""; //converting the sum to a string
        String newarray[] = newnum.split("");
        int newsum = 0;
        for (int i = 1; i <= newnum.length(); i++) {
            newsum = newsum + Integer.parseInt(newarray[i]);
        }
        System.out.println( newsum);
    }else{
         System.out.println(num);
    }

<强>输出

1