如何在Python中将字符串转换为整数?
我这个小例子应用的输出结果是这样的:
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
这是因为我的 addition() 方法把输入的内容当成了字符串,而不是数字。那我该怎么把它们当作数字来用呢?
下面是我的完整代码:
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 "\n"
8 个回答
1
在你的主函数里调用子函数的时候,可以把变量转换成整数,然后再进行调用。请看下面的代码:
import sys
print("Welcome to Calculator\n")
print("Please find the options:\n" + "1. Addition\n" + "2. Subtraction\n" +
"3. Multiplication\n" + "4. Division\n" + "5. Exponential\n" + "6. Quit\n")
def calculator():
choice = input("Enter choice\n")
if int(choice) == 1:
a = input("Enter first number\n")
b = input("Enter second number\n")
add(int(a), int(b))
if int(choice) == 2:
a = input("Enter first number\n")
b = input("Enter second number\n")
diff(int(a), int(b))
if int(choice) == 3:
a = input("Enter first number\n")
b = input("Enter second number\n")
mult(int(a), int(b))
if int(choice) == 4:
a = input("Enter first number\n")
b = input("Enter second number\n")
div(float(a), float(b))
if int(choice) == 5:
a = input("Enter the base number\n")
b = input("Enter the exponential\n")
exp(int(a), int(b))
if int(choice) == 6:
print("Bye")
sys.exit(0)
def add(a, b):
c = a+b
print("Sum of {} and {} is {}".format(a, b, c))
def diff(a,b):
c = a-b
print("Difference between {} and {} is {}".format(a, b, c))
def mult(a, b):
c = a*b
print("The Product of {} and {} is {}".format(a, b, c))
def div(a, b):
c = a/b
print("The Quotient of {} and {} is {}".format(a, b, c))
def exp(a, b):
c = a**b
print("The result of {} to the power of {} is {}".format(a, b, c))
calculator()
在这里,我做的就是在调用每个函数的时候,把输入的参数转换成整数。我希望这对你有帮助。
在你的情况下,可以这样修改:
if choice == "0":
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
print "Your result is:"
print addition(int(numberA), int(numberB))
13
>>> a = "123"
>>> int(a)
123
这里有一些免费的代码:
def getTwoNumbers():
numberA = raw_input("Enter your first number: ")
numberB = raw_input("Enter your second number: ")
return int(numberA), int(numberB)
20
因为你正在写一个计算器,它可能也会接受小数(比如 1.5, 0.03
),所以用一个简单的辅助函数会更稳妥:
def convertStr(s):
"""Convert string to either int or float."""
try:
ret = int(s)
except ValueError:
#Try float.
ret = float(s)
return ret
这样如果整数转换失败,你就会得到一个小数作为返回值。
补充一下:你的 division
函数可能会让你感到困惑,如果你不完全了解 Python 2.x 是如何处理整数除法的。
简单来说,如果你想要 10/2
的结果是 2.5
而不是 2
,你需要使用 from __future__ import division
,或者把其中一个或两个参数转换为小数,像这样:
def division(a, b):
return float(a) / float(b)