Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Dudas con función utilizando "operator"
#1
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...
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#2
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
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
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)
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#4
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
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)