Curso Avançado de Desenvolvimento Python
Capítulo
>
Nível
Funções Avançadas
Funções de Argumentos Variáveis
Objetivo
Pegue todos os consumíveis dentro do depósito e embale-os em contêineres de armazenamento utilizando funções com argumentos variantes.
Existem vários itens alimentícios localizados dentro de um depósito que precisam ser embalados para serem enviados para venda. Para fazer isso de forma eficiente, você pode criar funções personalizadas com um número variável de argumentos. São funções que não possuem um número definido de argumentos e permitem que você defina quantos argumentos forem necessários para executar as ações da função.
Existem duas (2) maneiras de adicionar um número variável de argumentos a uma função, dependendo do que você deseja alcançar. O primeiro método é criar uma lista de argumentos; em vez de inserir vários nomes de argumentos, coloque um asterisco na frente de um único argumento. Isso automaticamente cria uma lista.
def custom_function(message,*arguments):
player.speak(message)
return(arguments)
value = custom_function("lalala","one","two","three")
# The message "lalala" is printed on screen
# Value now returns the list ("one","two","three")
O segundo método consiste em colocar os argumentos dentro de um dicionário, em vez de em uma lista. Isso é feito da mesma forma que no método anterior, mas, em vez de colocar um asterisco, você coloca dois. Isso automaticamente cria um dicionário em vez de uma lista.
def custom_function(message,**arguments):
player.speak(message)
return(arguments)
value = custom_function("lalala", one = 1, two = 2, three = 3)
# The message "lalala" is printed on screen
# Value now returns the dictionary:
# {'one': 1, 'three': 3, 'two': 2}
Para embalar todos os itens para envio, crie dois conjuntos de funções personalizadas, uma para embalar itens individuais e outra para embalar múltiplos itens juntos. Use os argumentos variáveis para agrupar vários itens sem precisar criar muitas funções.
def pack_singles(name,*items):
length = len(items)
player.speak("There are %d types of %s, those being:"
% (length, name) )
player.speak(items)
player.place(items)
def pack_multi(name,**items):
length = len(items)
player.speak("There are %d types of %s, those being:"
% (length, name) )
player.speak(items)
player.place(items)
Há quatro (4) tipos diferentes de itens no campo: "jars", "eggs", "berries" e "fruit". Recolha todos os itens no depósito e caminhe em direção às marcações X na rota de envio.
Caminhe até as marcações X escuras e use a função pack_singles para embalar os "jars" e "eggs".
Para os "jars" há quatro (4) tipos que você coleta e são inseridos como argumentos, sendo eles "white", "purple", "red" e "brown". Estes devem ser armazenados no contêiner ao lado do tapete verde. O código é escrito assim: pack_singles("jars", "white", "purple", "red", "brown")
Para os "eggs" há três (3) tipos que você coleta e são inseridos como argumentos, sendo eles "white", "green" e "blue". Estes devem ser armazenados no contêiner ao lado do tapete laranja. O mesmo formato é utilizado que no exemplo anterior.
Depois, caminhe até as marcações X claras e use a função pack_multi para embalar os "berries" e "fruit". Para os "berries" há três (3) tipos que você coleta e são inseridos como argumentos, sendo eles "red", "blue" e "purple". Estes devem ser armazenados no contêiner ao lado do tapete azul. Você precisa adicionar as quantidades que coleta de cada um, assim: pack_multi("berries", red = 3 , blue = 2 , purple = 4 )
Para os "fruit" há quatro (4) tipos que você coleta e são inseridos como argumentos, sendo eles "apple", "pear", "orange" e "peach". Estes devem ser armazenados no contêiner ao lado do tapete vermelho. Use o mesmo formato da entrada anterior, certificando-se de que todos os itens sejam coletados e armazenados para completar o nível.