1
resposta

[Sugestão] Praticando a simplificação de funções

import random

# Função para padronizar o nome: remove espaços extras e aplica capitalização adequada
def escreve_texto_corretamente(texto):
    return ' '.join(texto.split()).title()

# Função para alocar aluno em uma sala aleatória
def aloca_alunos_em_salas(nome_do_aluno, lista_de_salas):
    nome_corrigido = escreve_texto_corretamente(nome_do_aluno)
    sala_escolhida = random.choice(lista_de_salas)
    return {'nome': nome_corrigido, 'sala': sala_escolhida}

# Exemplo simples de execução
salas = ["Sala A", "Sala B", "Sala C"]
aluno = "  joão da silva  "
resultado = aloca_alunos_em_salas(aluno, salas)
print(resultado)

Um ponto que considero muito importante é que a simplificação da função não deve ser vista apenas como deixar o código menor, porque, em programação, reduzir linhas nem sempre significa melhorar a solução. O ganho real aparece quando a função fica mais legível, previsível e reutilizável. Nesse exemplo, quando o nome deixa de ser apenas impresso e passa a ser retornado, ele pode ser usado em outra função, armazenado em variável, inserido em um dicionário ou aproveitado em fluxos maiores, como a própria alocação dos alunos nas salas. A aula fica ainda mais interessante justamente nesse momento, porque mostra a transição de uma função isolada para uma lógica em que uma função alimenta a outra.

Um exemplo mais completo de aplicação seria o do código acima, em que a padronização do nome e a escolha aleatória da sala passam a trabalhar juntas. Isso deixa mais visível que o return amplia bastante o potencial da função, porque o dado tratado não se perde na tela, ele continua circulando dentro do programa e pode ser usado para estruturar respostas mais organizadas, como no caso do dicionário com nome e sala.

Acho que esse tipo de exemplo aproxima bastante a teoria de situações reais, como cadastro de alunos, organização de listas ou tratamento de dados vindos de planilhas, porque mostra que a função não existe apenas para fins didáticos, mas para resolver problemas concretos de forma reaproveitável e mais limpa.

1 resposta

Olá, João!

Parabéns por compartilhar essa sugestão rica no tópico Iniciando a simplificação da função. Sua análise sobre o verdadeiro significado de refatorar e simplificar código demonstra uma maturidade técnica admirável, indo direto ao ponto que diferencia um script amador de um software profissional.

Sua leitura sobre o papel da instrução return foi cirúrgica. Em programação, o comando print() serve apenas como um canal de saída visual para o ser humano, funcionando como uma via de mão única onde o dado "morre" na tela. Já o return transforma a função em uma engrenagem ativa, permitindo que a informação tratada continue viva na memória do sistema para alimentar outros componentes, exatamente como você desenhou ao fazer a saída de escreve_texto_corretamente virar a entrada de aloca_alunos_em_salas.

Na sua visão, demonstrar como esse dicionário final poderia ser inserido em uma lista para acumular vários cadastros ajudaria a fixar ainda mais essa importância do return para os alunos que estão começando?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!