计算器减法和除法的错误结果

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为quo4 / 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

  1. 2-0 = 2 diff 现在变成 2 第二次迭代时输入为1,
  2. 1 -2 = -1 数字为 1 和 1 - diff 将变为 diff。那是-1。

因为在你提到的循环中,(number,diff) - 减法以相同的顺序发生