我怎样才能在Python中将string转换为int?

我得到我的小示例应用程序的输出如下:

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()方法将input()作为string而不是数字。 我怎样才能将它们用作数字?

这是我的整个脚本:

 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" 

既然你正在写计算器,大概也会接受浮点数( 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 

这样如果int转换不起作用,你会得到一个返回的浮点数。

编辑:如果你不完全知道python 2.x如何处理整数除法,你的division函数也可能导致一些悲伤的面孔。

简而言之,如果你想让10/2等于2.5不是 2 ,那么你需要from __future__ import division或者将其中的一个或两个参数都转换为floattypes,如下所示:

 def division(a, b): return float(a) / float(b) 
 >>> 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) 

也许以下,那么你的计算器可以使用任意数字基(如hex,二进制,基地7!等):(未经testing)

 def convert(str): try: base = 10 # default if ':' in str: sstr = str.split(':') base, str = int(sstr[0]), sstr[1] val = int(str, base) except ValueError: val = None return val val = convert(raw_input("Enter value:")) # 10 : Decimal # 16:a : Hex, 10 # 2:1010 : Binary, 10 

简单!

  if option == str(1): numberA = int(raw_input("enter first number. ")) numberB= int(raw_input("enter second number. ")) print " " print addition(numberA, numberB) etc etc etc 

def除(a,b):返回a + b

def减法(a,b):返回a – b

def乘法(a,b):返回a * b

(a,b):返回a / b

keepProgramRunning = True

打印“欢迎使用计算器!”

while keepProgramRunning:
打印“请select你想要做的:”

 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 = input("Enter your first number: ") numberB = input("Enter your second number: ") print "Your result is: " + str(addition(numberA, numberB)) + "\n" elif choice == "1": numberA = input("Enter your first number: ") numberB = input("Enter your second number: ") print "Your result is: " + str(subtraction(numberA, numberB)) + "\n" elif choice == "2": numberA = input("Enter your first number: ") numberB = input("Enter your second number: ") print "Your result is: " + str(multiplication(numberA, numberB)) + "\n" elif choice == "3": numberA = input("Enter your first number: ") numberB = input("Enter your second number: ") print "Your result is: " + str(division(numberA, numberB)) + "\n" elif choice == "4": print "Bye!" keepProgramRunning = False else: print "Please choose a valid option." print "\n" 

从主函数调用子函数时,可以将variables转换为int然后调用。 请参考下面的代码:

 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 = ab 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() 

在这里,我所做的是将所有input参数转换为int的函数。 我希望这是有帮助的。

在你的情况下,它可以像这样改变:

  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)) 
 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:"