Curso Avanzado de Desarrollo en Python
Capítulo
>
Nivel
Funciones Avanzadas
Funciones Lambda
Objetivo
Usa funciones lambda para documentar algunos consumibles para que puedan ser recogidos para el envío más adelante.
Algunas de las frutas y bayas en el campo están casi listas para ser recolectadas, de modo que puedan ser almacenadas, enviadas y vendidas. Sería una buena idea anotar los ítems que están casi listos para tener una estimación de cuántos productos de este campo se están empacando y enviando.
Para optimizar tu código, puedes usar funciones lambda, que es otra manera de crear funciones personalizadas, pero es más rápida cuando las funciones que estás creando son más simples.
# Normal Custom Function
def calculate(x , y , z) :
return( (x+y+z) *2 )
# Lambda Function
calculate = lambda x,y,z : (x + y + z) * 2
En el ejemplo anterior tienes dos funciones, una función personalizada y una función lambda. Aunque están escritas de manera diferente, son funcionalmente iguales; la función lambda es simplemente más fácil de usar y se puede configurar rápidamente sobre la marcha en medio del código. Dicho esto, el método normal de definir funciones sigue siendo muy útil para secuencias de código complejas.
Hay dos (2) tipos de ítems que se pueden categorizar en el campo: "fruits" y "berries". De estos dos (2) tipos, hay tres (3) frutas: apples, pears y oranges; y hay tres (3) bayas: red, blue y purple.
Primero configura la función lambda ilustrada anteriormente llamada calculate, lo que nos permitirá obtener el número de ítems previstos para la temporada sumando tres ítems y multiplicándolos por dos (2). Crea otra función lambda llamada estimate para estimar los ítems que serán recogidos, como una función personalizada de speak. Por último, configura una función lambda llamada total que suma dos valores y le resta un tercer valor llamado loss.
# Calculate items calculate = lambda x,y,z : (x + y + z) * 2 # Estimate items estimate = lambda number , name : player.speak( "I estimate %d %s this season" % (number,name) ) # Total all items total = lambda num1, num2, loss : ( (num1 + num2) - loss)
Crea variables para cada una de las tres (3) frutas y suma el número de cuántas hay en el campo. Camina hasta la marca X oscura y usa la función lambda calculate() con las tres variables de fruta, y almacena el valor en una variable personalizada llamada fruit_number, de la siguiente manera: fruit_number = calculate(orange,pear,apple). Luego, utiliza la función lambda estimate() usando fruit_number como el número y "fruits" como el nombre, de la siguiente manera: estimate(fruit_number, "fruits" ).
Una vez que hayas terminado con las frutas, camina hasta la marca X clara y haz lo mismo con las bayas. Configura variables para las tres (3) bayas con la cantidad de arbustos que cuentes en el campo, luego configura la función lambda de la misma manera que hiciste con las frutas, de la siguiente forma: berry_number = calculate(red,blue,purple). Usa la función lambda estimate() con berry_number y "berries" como argumentos.
Existe una constante llamada doc que contiene las estimaciones del mes pasado para el producto perdido. Dirígete al almacén, camina hacia la marca X dorada y usa la función speak() con la constante para leer un documento en la mesa, de modo que puedas determinar los números del mes pasado.
Una vez que conozcas los números del mes pasado, camina hasta la marca X oscura sobre la alfombra púrpura, enfrenta la mesa para que puedas determinar los totales para este mes. Crea una variable llamada season para calcular los totales de la temporada; usa fruit_number y berry_number como los números, y utiliza el número que determinaste a partir de la constante doc como el argumento loss, de la siguiente manera: season = total(berry_number,fruit_number, number found in doc constant)
Completa esto utilizando la función lambda estimate() usando la variable season como el argumento del número y "products" como el argumento del nombre para completar el nivel.