问题描述
我的小示例应用程序的输出如下:
The output I'm getting for my little example app is the following:
Welcome to the Calculator! Please choose what you'd like to do: 0: Addition 1: Subtraction 2: Multiplication 3: Division 4: Quit Application 0 Enter your first number: 1 Enter your second number: 1 Your result is: 11
这是因为 add() 方法将 input() 作为字符串而不是数字.如何将它们用作数字?
This is because the addition() method is taking the input() as strings and not numbers. How can I use them as numbers?
这是我的整个脚本:
def addition(a, b): return a + b def subtraction(a, b): return a - b def multiplication(a, b): return a * b def division(a, b): return a / b keepProgramRunning = True print "Welcome to the Calculator!" while keepProgramRunning: print "Please choose what you'd like to do:" print "0: Addition" print "1: Subtraction" print "2: Multiplication" print "3: Division" print "4: Quit Application" #Capture the menu choice. choice = raw_input() if choice == "0": numberA = raw_input("Enter your first number: ") numberB = raw_input("Enter your second number: ") print "Your result is:" print addition(numberA, numberB) elif choice == "1": numberA = raw_input("Enter your first number: ") numberB = raw_input("Enter your second number: ") print "Your result is:" print subtraction(numberA, numberB) elif choice == "2": numberA = raw_input("Enter your first number: ") numberB = raw_input("Enter your second number: ") print "Your result is:" print multiplication(numberA, numberB) elif choice == "3": numberA = raw_input("Enter your first number: ") numberB = raw_input("Enter your second number: ") print "Your result is:" print division(numberA, numberB) elif choice == "4": print "Bye!" keepProgramRunning = False else: print "Please choose a valid option." print " "
推荐答案
由于您正在编写一个可能也接受浮点数(1.5, 0.03)的计算器,因此更可靠的方法是使用这个简单的辅助函数:
Since you're writing a calculator that would presumably also accept floats (1.5, 0.03), a more robust way would be to use this simple helper function:
def convertStr(s): """Convert string to either int or float.""" try: ret = int(s) except ValueError: #Try float. ret = float(s) return ret
这样,如果 int 转换不起作用,您将返回一个浮点数.
That way if the int conversion doesn't work, you'll get a float returned.
如果您不完全了解 python 2.x 如何处理整数除法.
简而言之,如果您希望 10/2 等于 2.5 而 不 2,您将需要执行 from __future__ import division 或将一个或两个参数转换为 float,如下所示:
In short, if you want 10/2 to equal 2.5 and not 2, you'll need to do from __future__ import division or cast one or both of the arguments to float, like so:
def division(a, b): return float(a) / float(b)