Curso Avançado de Desenvolvimento Python
Capítulo
>
Nível
Funções Avançadas
Funções Lambda
Objetivo
Use funções lambda para documentar alguns consumíveis para que possam ser coletados para envio posteriormente.
Algumas das frutas e bagas no campo estão quase prontas para serem colhidas, assim podem ser armazenadas, enviadas e vendidas. Seria uma boa ideia anotar os itens que estão quase prontos para que você tenha uma estimativa de quantos produtos deste campo estão sendo embalados e enviados.
Para otimizar seu código, você pode usar funções lambda, que são outra forma de criar funções personalizadas, mas são mais rápidas quando as funções que você está criando são 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
No exemplo acima você tem duas funções, uma função personalizada e uma função lambda. Embora sejam escritas de forma diferente, elas têm a mesma funcionalidade; a função lambda é apenas mais fácil de usar e pode ser configurada rapidamente durante a execução do código. Dito isso, o método tradicional de definir funções continua sendo muito útil para sequências de código mais complexas.
Existem dois (2) tipos de itens que podem ser categorizados no campo: "fruits" e "berries". Destes dois (2) tipos, há três (3) frutas: apples, pears e oranges; e há três (3) bagas: red, blue e purple.
Primeiro, configure a função lambda ilustrada acima chamada calculate, que nos permitirá obter o número de itens previstos para a temporada somando três itens e multiplicando-os por dois (2). Crie outra função lambda chamada estimate para estimar os itens que serão coletados, funcionando como uma função de fala personalizada. Por fim, configure uma função lambda chamada total que soma dois valores e subtrai um terceiro valor denominado 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)
Crie variáveis para cada uma das três (3) frutas e adicione o número de cada uma no campo. Caminhe até a marca X escura e use a função lambda calculate() com as três variáveis de frutas, e armazene o valor em uma variável personalizada chamada fruit_number, assim: fruit_number = calculate(orange,pear,apple). Em seguida, use a função lambda estimate() utilizando fruit_number como o número e "fruits" como o nome, assim: estimate(fruit_number, "fruits" ).
Depois de terminar com as frutas, caminhe até a marca X clara e faça o mesmo com as bagas. Configure variáveis para as três (3) bagas com a quantidade de arbustos que você contar no campo, depois configure a função lambda da mesma forma que fez com as frutas, assim: berry_number = calculate(red,blue,purple). Use a função lambda estimate com berry_number e "berries" como argumentos.
Há uma constante chamada doc que contém as estimativas do mês passado para o produto perdido. Siga para o armazém, caminhe em direção à marca X dourada e use a função speak() com a constante para ler um documento sobre a mesa, assim você pode determinar os números do mês passado.
Depois que os números do mês passado forem conhecidos, caminhe até a marca X escura sobre o tapete roxo, encare a mesa para que você possa determinar os totais deste mês. Crie uma variável chamada season para calcular os totais da temporada, use fruit_number e berry_number como os números, e use o número determinado a partir da constante doc como o argumento de perda, assim: season = total(berry_number,fruit_number, number found in doc constant)
Finalize usando a função lambda estimate() com a variável season como o argumento do número e "products" como o argumento do nome para completar o nível.