🚀 Capítulo 06: Capturando Pokémons

NOTE

Este capítulo utiliza a temática de Pokémon para explicar os parâmetros de funções em Python, incluindo valores padrão. Aprenda a flexibilizar as suas funções!


🎯 Objetivo da Aula

Compreender como passar diferentes tipos de parâmetros para funções em Python, incluindo parâmetros posicionais, parâmetros nomeados e valores padrão.

🏢 O Cenário Prático (Seu Desafio)

Um mestre Pokémon está explorando o mapa e encontra um monstrinho selvagem. Para capturá-lo, ele joga uma Pokébola. Algumas Pokébolas são normais, outras são Great Balls (mais fortes). E cada Pokémon tem um nível.

No Python, quando criamos funções, podemos definir que alguns parâmetros são obrigatórios e outros são opcionais (ganham um valor padrão se o usuário não digitar nada). Seu desafio é criar a função de captura perfeita!


🧠 Fundamentos: A Teoria Traduzida

🎯 1. Parâmetros Posicionais (Obrigatórios):

São os parâmetros normais. A ordem em que você passa os valores importa!

def registrar_pokemon(nome, level):
    print(f"Registrado: {nome} no nível {level}")
 
 
registrar_pokemon("Pikachu", 5)

🎁 2. Valores Padrão (Opcionais):

Você pode definir um valor padrão usando o sinal de igual = na criação da função. Se quem chamar a função não passar esse dado, o Python usa o padrão!

def capturar(pokemon, bola="Pokébola normal"):
    print(f"Capturou {pokemon} usando uma {bola}!")
 
 
capturar("Charmander")  # Usa o padrão: Pokébola normal
capturar("Mewtwo", "Master Ball")  # Ignora o padrão e usa Master Ball

Atenção: Os parâmetros com valor padrão devem ficar sempre por último na lista de parâmetros!


📖 Exemplo Guiado: A Batalha

Vamos criar uma função com parâmetros nomeados para ficar mais claro:

def atacar(pokemon_atacante, pokemon_defensor, golpe="Investida"):
    print(
        f"{pokemon_atacante} usou {golpe} contra {pokemon_defensor}!"
    )
 
 
# Podemos passar os parâmetros fora de ordem se dissermos o nome deles!
atacar(
    pokemon_defensor="Squirtle",
    pokemon_atacante="Pikachu",
    golpe="Choque do Trovão",
)

🛠️ Prática Obrigatória 1: Criando a Função

  1. Escreva uma função chamada curar que receba o parâmetro pokemon e o parâmetro quantidade (este último com o valor padrão ). A função deve imprimir "Curando [pokemon] em [quantidade] pontos de vida."

🛠️ Prática Obrigatória 2: Usando o Padrão

  1. Como você chamaria a função curar criada acima passando apenas o nome "Bulbasaur" (deixando o valor padrão de cura agir)?

📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

Neste curso, você entregará suas atividades enviando o código para o seu repositório no GitHub usando o aplicativo GitHub Desktop. Siga o passo a passo detalhado:

  1. Verifique a estrutura: Certifique-se de que sua estrutura de pastas final está idêntica à mostrada abaixo.
  2. Abra o GitHub Desktop: Certifique-se de que o repositório do seu curso está selecionado no canto superior esquerdo.
  3. Visualize as alterações: Na aba Changes (à esquerda), você verá todos os arquivos que criou ou modificou nesta aula.
  4. Faça o Commit:
    • No campo Summary (na parte inferior esquerda), digite uma mensagem curta descrevendo o que fez, ex: Finaliza atividades do Capítulo.
    • Clique no botão azul Commit to main (ou o nome da sua branch).
  5. Envie para a Nuvem (Push): No topo da tela, clique no botão Push origin. Isso enviará seu código do seu computador para o seu perfil no GitHub.
  6. ⚠️ IMPORTANTE (Repositório Público): Para que o professor consiga corrigir, o seu repositório no GitHub DEVE SER PÚBLICO. Repositórios privados não podem ser visualizados por quem não foi convidado.
  7. Como entregar no Microsoft Teams:
    • Copie o link do seu repositório no GitHub (ex: https://github.com/seu-usuario/seu-repositorio).
    • Abra a tarefa correspondente no Microsoft Teams.
    • Clique no botão Adicionar trabalho (ou Add work).
    • Selecione a opção Link no menu lateral.
    • Cole o link do GitHub no campo “Endereço Web” e digite um texto (ex: Meu Repositório) no campo “Texto a ser exibido”.
    • Clique em Anexar.
    • MUITO IMPORTANTE: Clique no botão Entregar (ou Turn in) no canto superior direito para concluir o envio!

📂 Estrutura de Pastas

spec_backend_com_python_e_fastapi/
├── capitulos/
│   └── capitulo_06_pokemon.md

💡 Checkpoint de Lógica

Os parâmetros nomeados (como golpe="Choque do Trovão") deixam o seu código muito mais legível quando a função recebe muitos dados, pois quem está lendo sabe exatamente o que é cada valor!

🔥 Desafio de Fixação (Opcional)

Pesquise o que significam os símbolos *args e **kwargs em funções Python (Dica: servem para receber uma quantidade infinita de parâmetros!).

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

def curar(pokemon, quantidade=20):
    print(f"Curando {pokemon} em {quantidade} pontos de vida.")

Gabarito da Prática 2:

curar("Bulbasaur")

Capitulo Anterior | Proximo Capitulo