所以这段代码给出了一个整数的数字之和,它运行得很好,但我想了解它是如何工作的,有人可以为我分解它吗?
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)+" ")
答案 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()