2010-10-20 3 views
9

выход я получаю на мой маленький пример приложения является следующее:Как преобразовать строку в int в 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 

Это происходит потому, что метод сложения() принимает входной сигнал() в виде строк, а не чисел. Как я могу использовать их в качестве чисел?

Вот весь мой сценарий:

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" 
+0

Я уже говорил о том, что система разместила вопрос дважды, проверьте время поста. Не совсем моя ошибка, и я тоже не могу удалить вопрос. – 2010-10-20 14:53:07

+0

Ссылка 'закрыть 'нет для вас? –

+0

Это не сразу закрывает вопрос. – 2010-10-20 14:55:22

ответ

15

Поскольку вы пишете калькулятор, который, предположительно, также принимать поплавки (1.5, 0.03), A более надежным способом было бы использовать эту простую вспомогательную функцию:

def convertStr(s): 
    """Convert string to either int or float.""" 
    try: 
     ret = int(s) 
    except ValueError: 
     #Try float. 
     ret = float(s) 
    return ret 

Таким образом, если преобразование int не работает, вы получите возвращаемое поплавок.

Редактировать: ваша функция division может также привести к некоторым грустным лицам, если вы не полностью осведомлены о how python 2.x handles integer division.

Короче говоря, если вы хотите 10/2 равным 2.5 и не2, вам нужно сделать from __future__ import division или бросить один или оба из аргументов с плавающей точкой, например, так:

def division(a, b): 
    return float(a)/float(b) 
+0

Эй, это довольно аккуратно, спасибо! – 2010-10-20 14:50:24

+1

'convertStr = float', работает почти так же. –

11
>>> 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) 
+0

Дополнительные встроенные функции: http://docs.python.org/library/functions.html –

0

Возможно, Ниже, то ваш калькулятор может использовать произвольное число базы (например, шестнадцатеричном, двоичном, основание 7 и т.д.!): (непроверенные)

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 
0

легко!

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 
0

Защиту сложение (а, б): возвращают + б

четкости вычитание (а, б): возвращают - б

четкости умножения (а, б): вернуться A * B

четкости деления (а, б): возвращал/б

keepProgramRunning = True

print "Добро пожаловать в Калькулятор!"

в то время как keepProgramRunning:
печати «Пожалуйста, выберите то, что вы хотите сделать:»

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" 
+0

Как насчет небольшого объяснения? – djv

-1
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:" 
0

Призывая свои вложенные функции из ваших основных функций, которые вы можете преобразовать переменные в межды, а затем вызов.Пожалуйста, обратитесь код ниже:

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)) 
Смежные вопросы