2017-11-18 2 views
3

私はプログラミングにはとても新しいですが、私は単純な電卓だけで作業していました。 プログラムを立ち上げて分割部分を試してみましたが(5を2で割ろうとしました)、出力は3.0でした。 2つの数字は浮動小数点数なので、なぜこれがうまくいかないのか分かりません。第二に、乗算も間違った答えを与える。Pythonのシンプルな浮動小数点除算:正確ではない

from math import * 

while True: 

print("Options:") 
print("Enter 'add' to add two numbers") 
print("Enter 'subtract' or '-' to subtract two numbers") 
print("Enter 'multiply' to multiply two numbers") 
print("Enter 'divide' to divide two numbers") 
print("Enter 'quit' to end the program") 
user_input = input(": ") 

if user_input == "quit": 
    print ("Calculator stopped.") 
    break 
elif user_input == "subtract" or "-": 
    num1 = float(input("num1: ")) 
    num2 = float(input("num1: ")) 
    print(num1 - num2) 
elif user_input == "multiply" or "*": 
    num1 = float(input("num1: ")) 
    num2 = float(input("num1: ")) 
    print(">> ", num1 * num2," <<") 
elif user_input == "divide" or "/": 
    num1 = float(input("num1: ")) 
    num2 = float(input("num1: ")) 
    sum = num1/num2 
    print(str(float(num1)/num2)) 
else: 
    print("Unknown command") 

私はPython 3.6.1を使用します。

+0

乗算は、同様に間違った答えを与える。.. –

答えて

6

これは、あなたが考える何をしていません。

elif user_input == "subtract" or "-": 

次のようにそれがグループ化されたかのように動作します:

elif (user_input == "subtract") or "-": 

かかわらずuser_inputの値の、この条件がTrueと評価されます("-"は空ではなく、したがってTrueです)、減算が実行されます。

(2 5を分割しようと)、出力が5マイナス2コードが減算される3であるので、すなわち3.0

ました。

あなたはより多くのような何かをしたいが:

from math import * 

while True: 

    print("Options:") 
    print("Enter 'subtract' or '-' to subtract two numbers") 
    print("Enter 'multiply' to multiply two numbers") 
    print("Enter 'divide' to divide two numbers") 
    print("Enter 'quit' to end the program") 
    user_input = input(": ") 

    if user_input == "quit": 
     print ("Calculator stopped.") 
     break 
    elif user_input in ("subtract", "-"): 
     num1 = float(input("num1: ")) 
     num2 = float(input("num1: ")) 
     print(num1 - num2) 
    elif user_input in ("multiply", "*"): 
     num1 = float(input("num1: ")) 
     num2 = float(input("num1: ")) 
     print(">> ", num1 * num2," <<") 
    elif user_input in ("divide", "/"): 
     num1 = float(input("num1: ")) 
     num2 = float(input("num1: ")) 
     print(num1/num2) 
    else: 
     print("Unknown command") 
+1

コードを修正し、それが完璧に動作しています!速いヘルプありがとう! –

関連する問題