解释整数位数之和的算法

时间:2017-06-02 08:32:31

标签: python

所以这段代码给出了一个整数的数字之和,它运行得很好,但我想了解它是如何工作的,有人可以为我分解它吗?

def sumOfDigits():
    number=requestInteger(" Please enter an Integer: ")
    answer = 0
    while number > 0:
        remainder = number % 10
        answer += remainder
        number = (number-remainder)/10
    return showInformation("The sum of digits is "+str(answer)+" ")

2 个答案:

答案 0 :(得分:0)

让我们做一个干运行: 数字是你的输入 假设数字= 13 模数乘以10导致3为余数 我们将3作为总和存储在答案中 13-3(余数)导致10 现在的数字是10/10这是一(1) 1模数乘10导致1 所以现在回答是1 + 3 = 4 现在的数字是1 - 1,其余为0,这不符合循环的条件

那是干涸: 将模数乘以10得出单位的数字。 再次通过数字减去单位的数字,可以得到不包括单位数字的数字。同样,采用10的模数用于减少的数量。 并且添加所有单位的数字以获得总和

答案 1 :(得分:0)

您可以为调试添加一些打印信息:

import java.util.Scanner;
import java.io.File;
import java.util.NoSuchElementException;
import java.io.FileNotFoundException;

public class Triangle {

public static void main (String[] args)
{

    File fileName = new File("input.txt");
    Scanner scan = null;
    String str[];
    int s1=0,s2=0,s3=0;
try 
{ 
    Scanner file = new Scanner( new File("input.txt"));
    String line;
    while((line=file.nextLine())!=null)
    {
        str = line.split(" ");

        if(str.length==3)
        {
            try
            {
                s1 = Integer.parseInt(str[0]);
                s2 = Integer.parseInt(str[1]);
                s3 = Integer.parseInt(str[2]);

                if(s1+s2>=s3 && s2+s3>=s1 && s1+s3>=s2)
                {
                    if(s1==s2 && s2==s3) System.out.println("Equilateral");
                    else if(s1==s2 || s2==s3 || s3==s1) System.out.println("Isosceles");
                    else System.out.println("Scalene");
                }
                else
                {
                    System.out.println("Not a Triangle");
                }
            }
            catch(Exception e)
            {
                System.out.println("Not a Triangle");
            }

        }
        else
        {
            System.out.println("Not a Triangle");
        }
    }
}
catch(Exception e)
{

}

}

}

输出结果为:

def sumOfDigits():
number = int(input("Please enter an Integer: "))
print("input bumber is: ", number)
answer = 0
iLoop = 0
while number > 0:
    iLoop += 1
    print("\r\nLoop: ",  iLoop)
    remainder = number % 10
    print("remainder: ", remainder)
    answer += remainder
    print("answer: ", answer)
    number = (number-remainder)/10
    print("number: ", number)
print("\r\nThe sum of digits is "+str(answer)+" ")

sumOfDigits()