Foros Python
Dudas con función utilizando "operator" - Versión para impresión

+- Foros Python (https://foro.recursospython.com)
+-- Foro: Desarrollo (https://foro.recursospython.com/forumdisplay.php?fid=1)
+--- Foro: General (https://foro.recursospython.com/forumdisplay.php?fid=9)
+--- Tema: Dudas con función utilizando "operator" (/showthread.php?tid=1033)



Dudas con función utilizando "operator" - Daniel.py - 26-09-2021

Hola gente, ¿como están?, hola Francisco, buen día.-
Les dejo el código para que alguien me de una idea de lo que
hacen las 2 llamadas a la función, en la primera puse un print()
y lo que imprimió no lo entiendo.-

  1. import operator
  2.  
  3. func = {
  4.     "+": operator.add,
  5.     "-": operator.sub,
  6.     "*": operator.mul,
  7.     "/": operator.truediv
  8. }
  9.  
  10. n1 = float(input("\nIngrese el primer número.....: "))
  11. n2 = float(input("Ingrese el segundo número....: "))
  12.  
  13. print(""" ===== Opciones =====
  14.     + = Sumar
  15.     - = Restar
  16.     * = Multiplicar
  17.     / = Dividir
  18.     """)
  19. opc = input(" Elige una opcion...: ")
  20.  
  21. if opc == '+' or opc == '-' or opc == '*' or opc == '/'
  22.     f = func[opc]
  23.     print("\n Resultado = ", f(n1, n2))
  24. else:
  25.     print("\n Opción incorrecta...")
  26.  
  27. input("\n Pulse <Enter> para finalizar....:")


Desde ya muchas gracias...


RE: Dudas con función utilizando "operator" - Francisco - 27-09-2021

Hola, Daniel.

Es un código un tanto complejo. Para empezar, operator es un módulo estándar que contiene funciones que hacen lo mismo que los operadores de Python. Así, a + b es lo mismo que operator.add(a, b), a * b es lo mismo que operator.mul(a, b), etc. Con este código:

  1. func = {
  2. "+": operator.add,
  3. "-": operator.sub,
  4. "*": operator.mul,
  5. "/": operator.truediv
  6. }


Estás creando un diccionario que asocia los operadores de Python (expresados como cadenas, pues esos operadores los va a ingresar el usuario vía input()) con las funciones correspondientes del módulo que mencioné recién. Luego, en esta línea:

  1. f = func[opc]


Se guarda en "f" la función asociada al operador que el usuario ingresó vía el input() y se guardó en la variable "opc". Esta sintaxis de los corchetes es una sintaxis propia de los diccionarios. Para profundizar sobre diccionarios te dejo este artículo: https://recursospython.com/guias-y-manuales/diccionarios/.

Finalmente, en esta línea:

  1. print("\n Resultado = ", f(n1, n2))


Se llama a f(n1, n2), donde f es alguna de las cuatro funciones definidas en el diccionario "func" al principio (operator.add, operator.sub, etc.), y se imprime el resultado.

Saludos


RE: Dudas con función utilizando "operator" - Daniel.py - 28-09-2021

Hola Francisco ¿como estas?, me demore un tanto en agradecerte porque me cuesta un poco en interpretar lo que
escribiste, no obstante una cosa me quedo claro, tengo que construir mi casa comenzando por los cimientos
y no por el techo.-
Gracias  Francisco, hasta la próxima(no creo que pase mucho tiempo, jajajajaja)


RE: Dudas con función utilizando "operator" - Francisco - 29-09-2021

Hola, Daniel.

No te preocupes. Coincido con lo que decís. Para una calculadora, lo que esta solución ahorra en líneas de código lo derrocha en complejidad. Si recién estás empezando con Python, te conviene no desviarte demasiado con el módulo operator y comenzar a estudiar los diccionarios, que se usan mucho y son muy útiles.

Saludos