Coding for KidsCoding for Kids
Níveis CriativosDesafiosGuia do Professor
Votar em funcionalidades
Curso Avançado de Desenvolvimento Python
Capítulo
>
Nível

Funções Avançadas
Funções Aninhadas

Objetivo

Colete, redistribua e armazene o tecido produzido pelas máquinas usando funções aninhadas.

Às vezes, você desejará colocar funções dentro de outras funções para ampliar as capacidades dessa função. Estas são chamadas de funções aninhadas ou funções internas, e têm diversos usos, desde criar código reutilizável simples dentro de uma função até proteger suas funções de manipulação externa.

Dentro da oficina, há várias máquinas de fabricação de tecido; algumas possuem tecido pronto para armazenamento, outras necessitam de linha para concluir a produção do tecido. Cada uma possui um tapete "red" ou "green" em frente a ela que indicará como ela deve ser utilizada. No editor de código, uma função será escrita que nos permitirá operar a máquina e, assim, coletar ou colocar materiais na máquina.

def operate_machine(color): def collect_cloth(): # Collect Code player.speak("Cloth is ready for storage") def place_thread(): # Place Code player.speak("Machine needed more materials") if color == "green": collect_cloth() if color == "red": place_thread()

A função é chamada operate_machine e recebe um argumento chamado color. Dependendo do tapete em frente à máquina, inserir "red" ou "green" como argumento mudará a operação da máquina, permitindo que você coloque ou colete itens.

Dentro da função, você encontrará duas funções aninhadas, chamadas collect_cloth() e place_thread(), utilizadas para os propósitos indicados por seus nomes. Faltam linhas necessárias para realizar suas ações; na função collect_cloth() adicione a linha player.collect("cloth"), seguida por player.speak("Quilt is ready for storage") e, na função place_thread() adicione a linha player.place("thread") seguida por player.speak("Machine needed more materials").

Depois que as linhas de código faltantes forem adicionadas às funções aninhadas, caminhe até o X iluminado em frente à caixa e colete "thread" para ser utilizada na máquina, assim: player.collect("thread").

Caminhe até os X escuros dentro da oficina e use a função personalizada operate_machine enquanto estiver de frente para as máquinas. Adicione "red" ou "green" como argumento, dependendo da cor do tapete onde o X está localizado, por exemplo: operate_machine("red"). Isso permitirá que você coloque a linha e colete o tecido.

Depois de coletar todo o tecido, caminhe até o X dourado ao lado da caixa, na parte de trás, e use a função place() para armazená-lo. Crie uma variável chamada cloths, atribua a ela o número de tecidos que você coletou e armazene-a na caixa para completar o nível, assim: player.place(cloths).

Livro de Código