Cómo crear un programa de calculadora en Python 3

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Solicitar la participación de los usuarios
  • Paso 2: Agregar operadores
  • Paso 3: Agregar declaraciones condicionales
  • Paso 4: Definición de funciones
  • Paso 5: Mejorar el código
  • Conclusión
  • El lenguaje de programación Python es una gran herramienta para trabajar con números y evaluar expresiones matemáticas. Esta cualidad se puede aprovechar para crear programas útiles.

    Este tutorial presenta un ejercicio de aprendizaje que describe cómo crear un programa de calculadora de línea de comandos en Python 3. Esta calculadora solo podrá realizar operaciones aritméticas básicas, pero el paso final de esta guía sirve como punto de partida para saber cómo mejorar el código y crear una calculadora más robusta.

    Usaremos operadores matemáticos , variables , declaraciones condicionales , funciones y manejaremos la entrada del usuario para crear nuestra calculadora.

    Prerrequisitos

    Para este tutorial, debe tener Python 3 instalado en su computadora local y un entorno de programación configurado en la máquina. Si necesita instalar Python o configurar el entorno, puede hacerlo siguiendo la guía adecuada para su sistema operativo .

    Paso 1: Solicitar la participación de los usuarios

    Las calculadoras funcionan mejor cuando una persona proporciona ecuaciones para que la computadora las resuelva. Comenzarás a escribir tu programa en el punto en el que la persona ingrese los números con los que desea que trabaje la computadora.

    Primero, creará un archivo para su programa. Para este ejemplo, utilizaremos el editor de texto nanoy le pondremos el nombre siguiente calculator.py:

    1. nano calculator.py

    A continuación, agregará contenido a este archivo para ejecutar su programa. Para este programa, hará que el usuario ingrese dos números, por lo que deberá indicarle al programa que solicite al usuario dos números. Puede hacer esto utilizando la input()función incorporada de Python para aceptar la entrada generada por el usuario desde el teclado. Dentro de los paréntesis de la input()función, puede pasar una cadena para solicitarle al usuario y luego asignar la entrada del usuario a una variable. Tenga en cuenta que, cuando solicite una entrada, puede ser útil incluir un espacio al final de la cadena para que haya un espacio entre la entrada del usuario y la cadena de solicitud:

    calculadora.py

    number_1 = input('Enter your first number: ')number_2 = input('Enter your second number: ')

    Después de escribir dos líneas, debes guardar el programa antes de ejecutarlo. Si estás usando nano, puedes salir presionando CTRL + Xthen Yy ENTER.

    Ejecute su programa con el siguiente comando:

    1. python calculator.py

    Esto iniciará las indicaciones de su programa y podrá responder en la ventana de terminal:

    OutputEnter your first number: 5Enter your second number: 7

    Si ejecuta este programa varias veces y varía la entrada, notará que puede ingresar lo que desee cuando se le solicite, incluidas palabras, símbolos, espacios en blanco o la tecla Intro. Esto se debe a que input()toma los datos como cadenas y no sabe que está buscando números.

    Querrás utilizar números en este programa por dos razones:

    1. para permitir que el programa realice cálculos matemáticos
    2. para validar que la entrada del usuario es una cadena numérica

    Según las necesidades de su calculadora, es posible que desee convertir la cadena que ingresa desde la input()función en un entero o un flotante. Para este tutorial, los números enteros se adaptan a nuestro propósito, por lo que debe incluir la input()función en la int()función para convertir la entrada en el tipo de datos entero :

    calculadora.py

    number_1 = int(input('Enter your first number: '))number_2 = int(input('Enter your second number: '))

    Ahora, si ejecuta el programa e ingresa dos números enteros, no se encontrará con ningún error:

    OutputEnter your first number: 23Enter your second number: 674

    Pero, si ingresa letras, símbolos o cualquier otro número no entero, encontrará el siguiente error:

    OutputEnter your first number: sammyTraceback (most recent call last):  File "testing.py", line 1, in module    number_1 = int(input('Enter your first number: '))ValueError: invalid literal for int() with base 10: 'sammy'

    Hasta ahora, has configurado dos variables para almacenar la entrada del usuario en forma de tipos de datos enteros. También puedes experimentar convirtiendo la entrada en números de punto flotante.

    Paso 2: Agregar operadores

    Antes de completar el programa, deberá agregar un total de cuatro operadores matemáticos : +para suma, -para resta, *para multiplicación y /para división.

    A medida que vaya desarrollando el programa, deberá asegurarse de que cada parte funcione correctamente, por lo que debe comenzar configurando la suma. Sumará los dos números dentro de una función de impresión para que la persona que use la calculadora pueda ver el contenido:

    calculadora.py

    number_1 = int(input('Enter your first number: '))number_2 = int(input('Enter your second number: '))print(number_1 + number_2)

    Ejecute el programa y escriba dos números cuando se le solicite para asegurarse de que funciona como se espera:

    OutputEnter your first number: 8Enter your second number: 311

    El resultado muestra que el programa está funcionando correctamente. Ahora, agregue más contexto para que el usuario esté completamente informado durante el tiempo de ejecución del programa. Para ello, utilice formateadores de cadenas para ayudar a formatear correctamente el texto y proporcionar comentarios. Desea que el usuario reciba confirmación sobre los números que está ingresando y el operador que se está utilizando junto con el resultado producido:

    calculadora.py

    number_1 = int(input('Enter your first number: '))number_2 = int(input('Enter your second number: '))print('{} + {} = '.format(number_1, number_2))print(number_1 + number_2)

    Ahora, cuando ejecute el programa, tendrá una salida adicional que permitirá al usuario confirmar la expresión matemática que está realizando el programa:

    OutputEnter your first number: 90Enter your second number: 71790 + 717 = 807

    El uso de los formateadores de cadenas proporciona a los usuarios más información.

    En este punto, puedes agregar el resto de operadores al programa con el mismo formato utilizado para la suma:

    calculadora.py

    number_1 = int(input('Enter your first number: '))number_2 = int(input('Enter your second number: '))# Additionprint('{} + {} = '.format(number_1, number_2))print(number_1 + number_2)# Subtractionprint('{} - {} = '.format(number_1, number_2))print(number_1 - number_2)# Multiplicationprint('{} * {} = '.format(number_1, number_2))print(number_1 * number_2)# Divisionprint('{} / {} = '.format(number_1, number_2))print(number_1 / number_2)

    Aquí, estás agregando los operadores restantes, -, *y /al programa anterior. Si ejecutas el programa en este punto, el programa ejecutará todas las operaciones anteriores. Sin embargo, deseas limitar el programa para que realice una operación a la vez. Para ello, utilizarás declaraciones condicionales.

    Paso 3: Agregar declaraciones condicionales

    El objetivo del calculator.pyprograma es que el usuario pueda elegir entre los diferentes operadores. Para empezar, se añade una información en la parte superior del programa, junto con una opción a elegir, para que la persona sepa qué hacer.

    Escribe una cadena en varias líneas diferentes utilizando comillas triples:

    '''Please type in the math operation you would like to complete:+ for addition- for subtraction* for multiplication/ for division'''

    Este programa utiliza cada uno de los símbolos de operador para que los usuarios hagan su elección, por lo que si el usuario desea que se realice una división, deberá escribir /. Sin embargo, puede elegir los símbolos que desee, como 1 for addition, o b for subtraction.

    Como estás pidiendo a los usuarios que ingresen información, quieres usar la input()función. Coloca la cadena dentro de la input()función y pasa el valor de esa información a una variable, a la que le pondrás el nombre siguiente operation:

    calculadora.py

    operation = input('''Please type in the math operation you would like to complete:+ for addition- for subtraction* for multiplication/ for division''')number_1 = int(input('Enter your first number: '))number_2 = int(input('Enter your second number: '))print('{} + {} = '.format(number_1, number_2))print(number_1 + number_2)print('{} - {} = '.format(number_1, number_2))print(number_1 - number_2)print('{} * {} = '.format(number_1, number_2))print(number_1 * number_2)print('{} / {} = '.format(number_1, number_2))print(number_1 / number_2)

    En este punto, si ejecuta el programa, no ocurrirá nada, sin importar lo que ingrese en el primer mensaje. Para corregir esto, agregue algunas declaraciones condicionales al programa. Debido a la forma en que ha estructurado el programa, la ifdeclaración será donde se realice la suma, habrá 3 elifdeclaraciones else-if o para cada uno de los otros operadores, y la elsedeclaración se colocará en su lugar para manejar un error si el usuario no ingresó un símbolo de operador:

    calculadora.py

    operation = input('''Please type in the math operation you would like to complete:+ for addition- for subtraction* for multiplication/ for division''')number_1 = int(input('Enter your first number: '))number_2 = int(input('Enter your second number: '))if operation == '+':    print('{} + {} = '.format(number_1, number_2))    print(number_1 + number_2)elif operation == '-':    print('{} - {} = '.format(number_1, number_2))    print(number_1 - number_2)elif operation == '*':    print('{} * {} = '.format(number_1, number_2))    print(number_1 * number_2)elif operation == '/':    print('{} / {} = '.format(number_1, number_2))    print(number_1 / number_2)else:    print('You have not typed a valid operator, please run the program again.')

    Para recorrer este programa, primero se le pide al usuario que ingrese un símbolo de operación. Por ejemplo, supongamos que el usuario ingresa *multiplicar. A continuación, el programa solicita dos números y el usuario ingresa 58y 40. En este punto, el programa muestra la ecuación realizada y el producto:

    OutputPlease type in the math operation you would like to complete:+ for addition- for subtraction* for multiplication/ for division* Please enter the first number: 58Please enter the second number: 4058 * 40 = 2320

    Debido a la forma en que estructuró el programa, si el usuario ingresa %cuando se le solicita una operación en el primer mensaje, no recibirá una respuesta para volver a intentarlo hasta que ingrese los números. Es posible que desee considerar otras opciones posibles para manejar diversas situaciones.

    En este punto, ya tienes un programa completamente funcional, pero no puedes realizar una segunda o tercera operación sin ejecutar el programa nuevamente. El siguiente paso implica definir algunas funciones para agregar esta funcionalidad al programa.

    Paso 4: Definición de funciones

    Para gestionar la posibilidad de ejecutar el programa tantas veces como desee el usuario, definirá algunas funciones. Primero, coloque el bloque de código existente en una función. Asígnele un nombre a la función calculate()y añada una capa adicional de sangría dentro de la función misma. Para garantizar que el programa se ejecute, también llamará a la función en la parte inferior del archivo:

    calculadora.py

    # Define our functiondef calculate():    operation = input('''Please type in the math operation you would like to complete:+ for addition- for subtraction* for multiplication/ for division''')    number_1 = int(input('Please enter the first number: '))    number_2 = int(input('Please enter the second number: '))    if operation == '+':        print('{} + {} = '.format(number_1, number_2))        print(number_1 + number_2)    elif operation == '-':        print('{} - {} = '.format(number_1, number_2))        print(number_1 - number_2)    elif operation == '*':        print('{} * {} = '.format(number_1, number_2))        print(number_1 * number_2)    elif operation == '/':        print('{} / {} = '.format(number_1, number_2))        print(number_1 / number_2)    else:        print('You have not typed a valid operator, please run the program again.')# Call calculate() outside of the functioncalculate()

    A continuación, crea una segunda función compuesta por más sentencias condicionales. En este bloque de código, quieres darle al usuario la opción de elegir si quiere volver a calcular o no. Puedes basar esto en las sentencias condicionales de la calculadora, pero en este caso, solo tendrás una if, una elify una elsepara manejar los errores.

    Nombra esta función again()y agrégala después del def calculate():bloque de código:

    calculadora.py

    ... # Define again() function to ask user if they want to use the calculator againdef again():    # Take input from user    calc_again = input('''Do you want to calculate again?Please type Y for YES or N for NO.''')    # If user types Y, run the calculate() function    if calc_again == 'Y':        calculate()    # If user types N, say good-bye to the user and end the program    elif calc_again == 'N':        print('See you later.')    # If user types another key, run the function again    else:        again()# Call calculate() outside of the functioncalculate()

    Aunque la declaración else anterior tiene algún tipo de manejo de errores, probablemente podrías hacerla más clara para aceptar, por ejemplo, una and en minúscula yademás nde la Yand en mayúscula N. Para ello, agrega la función de cadena str.upper() :

    calculadora.py

    ...def again():    calc_again = input('''Do you want to calculate again?Please type Y for YES or N for NO.''')    # Accept 'y' or 'Y' by adding str.upper()    if calc_again.upper() == 'Y':        calculate()    # Accept 'n' or 'N' by adding str.upper()    elif calc_again.upper() == 'N':        print('See you later.')    else:        again()...

    En este punto, debes agregar la again()función al final de la calculate()función para que active el código que le pregunta al usuario si desea continuar o no:

    calculadora.py

    def calculate():    operation = input('''Please type in the math operation you would like to complete:+ for addition- for subtraction* for multiplication/ for division''')    number_1 = int(input('Please enter the first number: '))    number_2 = int(input('Please enter the second number: '))    if operation == '+':        print('{} + {} = '.format(number_1, number_2))        print(number_1 + number_2)    elif operation == '-':        print('{} - {} = '.format(number_1, number_2))        print(number_1 - number_2)    elif operation == '*':        print('{} * {} = '.format(number_1, number_2))        print(number_1 * number_2)    elif operation == '/':        print('{} / {} = '.format(number_1, number_2))        print(number_1 / number_2)    else:        print('You have not typed a valid operator, please run the program again.')    # Add again() function to calculate() function    again()def again():    calc_again = input('''Do you want to calculate again?Please type Y for YES or N for NO.''')    if calc_again.upper() == 'Y':        calculate()    elif calc_again.upper() == 'N':        print('See you later.')    else:        again()calculate()

    Ahora puedes ejecutar tu programa python calculator.pyen tu ventana de terminal y podrás calcular tantas veces como desees.

    Paso 5: Mejorar el código

    Ahora tienes un programa agradable y completamente funcional. Sin embargo, hay mucho más que puedes hacer para mejorar este código. Puedes agregar una función de bienvenida, por ejemplo, que dé la bienvenida a las personas al programa en la parte superior del código del programa, como esto:

    def welcome():    print('''Welcome to Calculator''')...# Don’t forget to call the functionwelcome()calculate()

    Existen oportunidades para introducir más control de errores en todo el programa. Para empezar, puede asegurarse de que el programa siga ejecutándose incluso si el usuario escribe planktoncuando se le pide un número. Tal como está el programa en este momento, si number_1y number_2no son números enteros, el usuario recibirá un error y el programa dejará de ejecutarse. Además, para los casos en los que el usuario selecciona el operador de división ( /) y escribe 0su segundo número ( number_2), recibirá un ZeroDivisionError: division by zeroerror. Para esto, puede que desee utilizar el control de excepciones con la try ... exceptdeclaración.

    Este ejercicio lo limita a cuatro operadores, pero puede agregar operadores adicionales, como en:

    ...    operation = input('''Please type in the math operation you would like to complete:+ for addition- for subtraction* for multiplication/ for division** for power% for modulo''')...# Don’t forget to add more conditional statements to solve for power and modulo

    Además, es posible que desees reescribir parte del programa con una declaración de bucle.

    Existen muchas formas de gestionar los errores y de modificar y mejorar cada uno de los proyectos de codificación. Es importante tener en cuenta que no existe una única forma correcta de resolver un problema que se nos presente.

    Conclusión

    Este tutorial repasó un posible enfoque para crear una calculadora en la línea de comandos. Después de completar este tutorial, podrá modificar y mejorar el código y trabajar en otros proyectos que requieran la intervención del usuario en la línea de comandos.

    ¡Nos interesa ver sus soluciones para este proyecto básico de calculadora de línea de comandos! No dude en publicar sus proyectos de calculadora en los comentarios.

    A continuación, es posible que quieras crear un juego basado en texto, como tres en raya o piedra, papel o tijera.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion