Foros Python

Versión completa: Dudas con función utilizando "operator"
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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.-

Código:
import operator

func = {
    "+": operator.add,
    "-": operator.sub,
    "*": operator.mul,
    "/": operator.truediv
}

n1 = float(input("
Ingrese el primer número.....: "))
n2 = float(input("Ingrese el segundo número....: "))

print(""" ===== Opciones =====
    + = Sumar
    - = Restar
    * = Multiplicar
    / = Dividir
    """)
opc = input(" Elige una opcion...: ")

if opc == '+' or opc == '-' or opc == '*' or opc == '/': 
    f = func[opc]
    print("
Resultado = ", f(n1, n2))
else:
    print("
Opción incorrecta...")

input("
Pulse <Enter> para finalizar....:")

Desde ya muchas gracias...
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:

Código:
func = {
    "+": operator.add,
    "-": operator.sub,
    "*": operator.mul,
    "/": operator.truediv
}

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:

Código:
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-manua...cionarios/.

Finalmente, en esta línea:

Código:
print("
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
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)
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