计算器减法和除法的错误结果
Wrong results for calculator subtraction and division
我的加法和乘法工作得很好。但是,对于减法,如果我输入 2 个数字,3 和 1,答案将是 -2,这显然是不正确的。部门也无法正常运作。
我可以输入 2 个数字,8 和 4,它会告诉我答案是 0.5,这也是不正确的。
我的代码出了什么问题?
print("Welcome to Calculator!")
class Calculator:
def addition(self,x,y):
added = x + y
return added
def subtraction(self,x,y):
subtracted = x - y
return subtracted
def multiplication(self,x,y):
multiplied = x * y
return multiplied
def division(self,x,y):
divided = x / y
return divided
calculator = Calculator()
print("1 \tAddition")
print("2 \tSubtraction")
print("3 \tMultiplication")
print("4 \tDivision")
operations = int(input("What operation would you like to use?: "))
x = int(input("How many numbers would you like to use?: "))
if operations == 1:
a = 0
sum = 0
while a < x:
number = int(input("Please enter number here: "))
a += 1
sum = calculator.addition(number,sum)
print("The answer is", sum)
if operations == 2:
s = 0
diff = 0
while s < x:
number = int(input("Please enter number here: "))
s += 1
diff = calculator.subtraction(number,diff)
print("The answer is", diff)
if operations == 3:
m = 0
prod = 1
while m < x:
number = int(input("Please enter number here: "))
m += 1
prod = calculator.multiplication(number, prod)
print("The answer is", prod)
if operations == 4:
d = 0
quo = 1
while d < x:
number = int(input("Please enter number here: "))
d += 1
quo = calculator.division(number, quo)
print("The answer is", quo)
if operations == 4:
d = 0
quo = 1
while d < x:
number = int(input("Please enter number here: "))
d += 1
quo = calculator.division(number, quo)
print("The answer is", quo)
第一次通过quo
变为8。然后再次通过4为number
和8为quo
。 4 / 8
= .5
这是使用 functools
库中的 reduce
的替代解决方案。
if operations == 4:
quo = 1
numbers = list()
while len(numbers) < x:
number = int(input("Please enter number here: "))
numbers.append(number)
quo = reduce(calculator.division, numbers)
print("The answer is", quo)
我想知道为什么这确实是除法不起作用的答案...
这些行有问题..
diff = 0
while s < x:
number = int(input("Please enter number here: "))
s += 1
diff = calculator.subtraction(number,diff)
print("The answer is", diff)
假设输入是上面代码段的第 3 行 2,循环的第一次迭代中的差异,数字(输入)是 2,差异已经是 0
- 2-0 = 2 diff 现在变成 2
第二次迭代时输入为1,
- 1 -2 = -1 数字为 1 和 1 - diff 将变为 diff。那是-1。
因为在你提到的循环中,(number,diff) - 减法以相同的顺序发生
我的加法和乘法工作得很好。但是,对于减法,如果我输入 2 个数字,3 和 1,答案将是 -2,这显然是不正确的。部门也无法正常运作。
我可以输入 2 个数字,8 和 4,它会告诉我答案是 0.5,这也是不正确的。
我的代码出了什么问题?
print("Welcome to Calculator!")
class Calculator:
def addition(self,x,y):
added = x + y
return added
def subtraction(self,x,y):
subtracted = x - y
return subtracted
def multiplication(self,x,y):
multiplied = x * y
return multiplied
def division(self,x,y):
divided = x / y
return divided
calculator = Calculator()
print("1 \tAddition")
print("2 \tSubtraction")
print("3 \tMultiplication")
print("4 \tDivision")
operations = int(input("What operation would you like to use?: "))
x = int(input("How many numbers would you like to use?: "))
if operations == 1:
a = 0
sum = 0
while a < x:
number = int(input("Please enter number here: "))
a += 1
sum = calculator.addition(number,sum)
print("The answer is", sum)
if operations == 2:
s = 0
diff = 0
while s < x:
number = int(input("Please enter number here: "))
s += 1
diff = calculator.subtraction(number,diff)
print("The answer is", diff)
if operations == 3:
m = 0
prod = 1
while m < x:
number = int(input("Please enter number here: "))
m += 1
prod = calculator.multiplication(number, prod)
print("The answer is", prod)
if operations == 4:
d = 0
quo = 1
while d < x:
number = int(input("Please enter number here: "))
d += 1
quo = calculator.division(number, quo)
print("The answer is", quo)
if operations == 4:
d = 0
quo = 1
while d < x:
number = int(input("Please enter number here: "))
d += 1
quo = calculator.division(number, quo)
print("The answer is", quo)
第一次通过quo
变为8。然后再次通过4为number
和8为quo
。 4 / 8
= .5
这是使用 functools
库中的 reduce
的替代解决方案。
if operations == 4:
quo = 1
numbers = list()
while len(numbers) < x:
number = int(input("Please enter number here: "))
numbers.append(number)
quo = reduce(calculator.division, numbers)
print("The answer is", quo)
我想知道为什么这确实是除法不起作用的答案...
这些行有问题..
diff = 0
while s < x:
number = int(input("Please enter number here: "))
s += 1
diff = calculator.subtraction(number,diff)
print("The answer is", diff)
假设输入是上面代码段的第 3 行 2,循环的第一次迭代中的差异,数字(输入)是 2,差异已经是 0
- 2-0 = 2 diff 现在变成 2 第二次迭代时输入为1,
- 1 -2 = -1 数字为 1 和 1 - diff 将变为 diff。那是-1。
因为在你提到的循环中,(number,diff) - 减法以相同的顺序发生