Uso de Python para construir una calculadora

Las calculadoras se remontan al siglo XVII, con la primera calculadora creada en forma de un dispositivo mecánico. Con el tiempo, estas calculadoras evolucionaron para que más personas pudieran usarlas. Fue en la década de 1960, que la primera calculadora electrónica surgió, y a medida que pasó el tiempo, la calculadora se integró en nuestras computadoras y ahora móviles.

Ya sea físico o digital, vivimos en un momento en que cada uno de nosotros ha usado una calculadora. Ya sea que estemos calculando el alquiler, totalizando la factura o encontrando el porcentaje final de los resultados de nuestros hijos, todos hemos recibido ayuda de la calculadora.

Utilicemos los conceptos básicos de Python, incluidas las funciones, declaraciones condicionales, diccionarios y bucles, para crear nuestra versión de una calculadora.

Trabajo de nuestra calculadora

Nuestra calculadora funcionará de la siguiente manera:

  1. Le pedirá al usuario un número
  2. Luego le pedirá al usuario la operación
  3. Le pedirá al usuario el segundo número
  4. Realizará sus cálculos e imprimirá la salida
  5. Le preguntará al usuario si quiere continuar con este número (como nuestra calculadora física) o comenzar de todas partes
  6. Si el usuario solicita que comience todo, reiniciará el proceso anterior
  7. Si el usuario quiere continuar con el resultado, tomará este número como el primero y solicitará la operación, y luego seguirá como la primera vez.

Construyamos el proceso de pensamiento anterior en un diagrama de flujo para una mejor comprensión:

Diagrama de flujo (imagen del autor)

Definición de funciones de operación

En primer lugar, definiremos las funciones que se llamarán cuando el usuario seleccione su símbolo de operación correspondiente. Definiremos las funciones add para su adición, subtract para sustracción, multiply para la multiplicación y divide para la división. Estas funciones tomarán los dos números como parámetros de entrada, y realizarán la operación seleccionada en ellos y devolverán el resultado.

def add(num1, num2):
    return num1 + num2


def subtract(num1, num2):
    return num1 - num2


def multiply(num1, num2):
    return num1 * num2


def divide(num1, num2):
    return num1/num2

Creación de un diccionario de operaciones

También creemos un diccionario de operations. Los símbolos de operación se almacenarán como claves, y el nombre de la operación, ese es también el nombre de la función, se almacenará como el valor para esa clave. Le pediremos al usuario que elija una operación y, según su elección, se llamará a la función de operación específica que hemos definido anteriormente.

operations = {
    "+": add,
    "-": subtract,
    "*": multiply,
    "/": divide,
}

Pidiendo al usuario la entrada

Una vez que hayamos definido nuestras funciones, solicitemos ahora al usuario su primer número. num1su operación seleccionada operation_symboly su segundo número num2:

num1 = float(input("What is the first number?: "))
for symbol in operations:
            print(symbol)
operation_symbol = input("Pick an operation: ")
num2 = float(input("What is the next number?: "))

Observe que hemos convertido los números de entrada al tipo de flotación. Además, hemos creado el bucle for que iterará sobre las claves en el diccionario de operaciones que hemos definido anteriormente e imprima cada símbolo de operación.

Calcular y mostrar la respuesta

A continuación, es calcular la respuesta e imprimirla al usuario en su formulario completo. El siguiente código se utilizará para este propósito:

answer = operations[operation_symbol](num1, num2)
print(f"{num1} {operation_symbol} {num2} = {answer}")

La variable de respuesta almacenará el valor que tenemos al llamar a la función relevante, de acuerdo con el símbolo de operación seleccionado. Hemos utilizado una cadena F para formatear correctamente la instrucción de salida.

Verifique la continuidad de la calculadora con el bucle While

Ahora que hemos calculado y mostrado el resultado, el siguiente paso es verificar si el usuario desea continuar usando la calculadora realizando el valor del resultado answer en adelante o quiere comenzar la calculadora por todas partes. Para este propósito, definiremos una variable should_accumulate Eso será cierto cuando el usuario quiera continuar y será falso cuando el usuario no desee continuar, sino que reiniciará la calculadora. El should_accumulate La variable se definirá anteriormente en nuestro código.

should_accumulate = True

while should_accumulate:
    ...
    choice = input(f"Type 'y' to continue calculating with {answer}, or type 'n' to start a new calculation: ")

        if choice == "y":
            num1 = answer
        else:
            should_accumulate = False
            print("\n" * 20)
            

Desde el should_accumulate variable es Truey hemos agregado un while bucle, el código dentro del bucle continuará ejecutándose, a menos que el usuario seleccione ‘n’. Cuando el usuario seleccione ‘N’, el cálculo no continuará, sino que se detendrá, y aparentemente comenzaremos una nueva consola escribiendo 20 líneas. Pero ahora queremos reiniciar la calculadora, por lo que para este propósito, usaremos un concepto de función de Python llamado recursión.

Para que la calculadora se reinicie, la definiremos como una función, y se llamará cuando queramos reiniciar la función de la calculadora sin continuar con el resultado. Esto se codificará como una función recursiva. La recursión en Python permite que se llame una función dentro de sí misma, tal como lo haremos a continuación:

def calculator():
    should_accumulate = True
    num1 = float(input("What is the first number?: "))

    while should_accumulate:
        for symbol in operations:
            print(symbol)
        operation_symbol = input("Pick an operation: ")
        num2 = float(input("What is the next number?: "))
        answer = operations[operation_symbol](num1, num2)
        print(f"{num1} {operation_symbol} {num2} = {answer}")

        choice = input(f"Type 'y' to continue calculating with {answer}, or type 'n' to start a new calculation: ")

        if choice == "y":
            num1 = answer
        else:
            should_accumulate = False
            print("\n" * 20)
            calculator()

Observe que hemos llamado la función de calculadora dentro de la función de la calculadora. Para que el código se ejecute por primera vez, necesitamos llamarlo afuera.

Consulte este enlace para acceder al código completo: https://github.com/mahnoorjaved98/using-python-to-build-a-calculator

Conclusión

En este breve tutorial, hemos aprendido con éxito cómo construir una calculadora en Python, con la capacidad de realizar las operaciones básicas 4 en suma, resta, multiplicación y división. Hemos logrado esto utilizando nuestro conocimiento básico de funciones, bucles y funciones recursivas.