Ricardo Mazuera
PreguntaMe dio por crear una calculadora y el código es el siguiente; sin embargo, creo que se puede acortar un poco más utilizando la función operación para que elija el símbolo de la operación de una vez. Llevo intentando más de una hora y no he podido, ni he encontrado la respuesta en internet.
Alguno me puede ayudar?. Gracias.
def operacion (eleccion): print (f""" Elegiste {eleccion}, ahora dime los números para los que deseas hacer esa operación: """) number1 = int(input("""¿Cuál es el número 1?: """)) number2 = int(input("""¿Cuál es el número 2?: """)) if eleccion == "sumar": resultado = number1 + number2 elif eleccion == "restar": resultado = number1 - number2 elif eleccion == "multiplicar" == 3: resultado = number1 * number2 elif eleccion == "dividir": resultado = number1 / number2 print(f""" El resultado de {eleccion} {number1} entre {number2} es: {resultado}""") def run(): menu = int(input(""" BIENVENIDO A TU CALCULADORA VIRTUAL Elige qué quieres hacer... 1. Sumar ➕ 2. Restar ➖ 3. Multiplicar ✖️ 4. Dividir ➗ ¿Qué eliges?: """)) while menu != 1 and menu != 2 and menu !=3 and menu !=4: menu = int(input("Por favor escribe una opción correcta: ")) continue if menu == 1: operacion ("sumar") elif menu == 2: operacion ("restar") elif menu == 3: operacion ("multiplicar") elif menu == 4: operacion ("dividir") if __name__ == "__main__": run()
Kevin J. Zea Alvarado
Hola, Ricardo.
¿Qué es exactamente lo que quieres hacer? Por lo que veo, el código funciona, ¿no es así? Si es el caso, ¿qué buscas hacer?
Ricardo Mazuera
Hola Kevin, gracias por responder.
El código funciona perfectamente, así es; sin embargo, quisiera saber si puedo evitar esta parte que me parece muy repetitiva y vincularla en la función operacion.
if eleccion == "sumar": resultado = number1 + number2 elif eleccion == "restar": resultado = number1 - number2 elif eleccion == "multiplicar" == 3: resultado = number1 * number2 elif eleccion == "dividir": resultado = number1 / number2
Algo así como:
def operacion (eleccion, simbolo):
dentro de los if del run pondría en cada uno "+", "-", "*", "/" dependiendo de cuál sea el necesario y en la definición la operación se haría dentro del mismo print, algo así como:
resultado = number1 + simbolo + number2
el error radica en que símbolo está como un str y no se cómo ponerlo para que quede operable ante los números.
No sé si me ya es bobada mía y el código que tengo está bien o si haya una manera de recortarlo de la manera que expongo.
Kevin J. Zea Alvarado
Ya entiendo.
Justo hubo una vez que hice éste mismo ejercicio, e igual con Python, y me preguntaba cómo debería manejar los bloques de código, o si debería separarlos en funciones.
Lo que alcanzo ver ahorita es que podrías cambiarlo por:
def run(): choice = input(""" BIENVENIDO A TU CALCULADORA VIRTUAL Elige qué quieres hacer... Si quieres sumar, escribe: + Si quieres restar, escribe: - Si quieres multiplicar, escribe: * Si quieres dividir, escribe: / ¿Qué eliges?: """) while choice != "+" and choice != "-" and choice != "*" and choice != "/": choice = input("Por favor, escribe una opción correcta: ") continue operacion(choice)
Y luego adaptar esta parte por:
if eleccion == "+": resultado = number1 + number2 elif eleccion == "-": resultado = number1 - number2 elif eleccion == "*": resultado = number1 * number2 elif eleccion == "/": resultado = number1 / number2
Por lo menos, así te evitas un condicional y sólo mandas el resultado directo, y dentro de la función
operacion()Ricardo Mazuera
Bueno sí, esa es una buena posibilidad Kevin, muchas gracias por tu ayuda y mostrarme otra forma de crear la calculadora.
![Curso Básico de Python [Empieza Gratis]](https://static.platzi.com/media/courses/OG-python-basico.png)