2017-07-28 151 views
0

我的加法和乘法工作得很好。但是,對於減法,如果我輸入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) 
+0

在「控制面板事情」改變與其他的像這樣的變量'other_diff = calculator.subtraction (數字,差異)'你正在累積相同的數字,就像你正在做一些奇怪的遞歸,並考慮使用更多的括號,因爲你正在使用python3x –

+0

謝謝!這有助於解決減法問題,但分裂呢? –

+1

您的發送編號和差異順序作爲參數發送錯誤的 –

回答

-1
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) 

我想知道爲什麼這是downvoted時,它確實是分裂的原因是不工作的答案...

+1

使用從functools減少是一個很好的方法來解決這個問題。我會爲你高興。沒有辦法讓某人可以低估這個答案。 –

+0

謝謝@KathiravanNatarajan。我不想讓它聽起來像我懇求upvotes。我只是困惑。 –

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) 

可以說輸入是上面代碼片段的第2行第3行,循環第一次迭代的不同,數字(輸入)是2,diff已經是0

  1. 2-0 = 2 diff現在變爲2 在第二次迭代中輸入爲1,
  2. 1 -2 = -1數字爲1且1 - diff將變爲diff。那是-1。

由於在循環中,您提到的,(數,差異) - 減法發生在相同的順序

+1

司也是如此 –