计算器减法和除法的结果错误 [英] Wrong results for calculator subtraction and division

查看:803
本文介绍了计算器减法和除法的结果错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的加法和乘法工作正常。但是,对于减法,如果我输入2个数字3和1,答案将是-2,这显然是错误的。除法也无法正常运行。

My addition and multiplication work just fine. However, for subtraction, if I input 2 numbers, 3 and 1, the answer would be -2, which is obviously incorrect. Division is also not functioning properly.

我可以输入2个数字8和4,它会告诉我答案是0.5,这也是不正确的。

I can input 2 numbers, 8 and 4, and it would tell me the answer is 0.5, which is also incorrect.

我的代码出了什么问题?

What went wrong in my code?

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作为数字和8作为 quo 4/8 = .5

The first time through quo becomes 8. Then it goes through again with 4 as number and 8 as quo. 4 / 8 = .5

这里是另一种选择解决方案使用 functools 库中的 reduce

Here's an alternative solution using reduce from the functools library.

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)

我想知道为什么当它被否决时确实是为什么除法不起作用的答案...

I'd like to know why this was downvoted when it is indeed the answer why division wasn't working...

这篇关于计算器减法和除法的结果错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆