Olá, Luiz Fernando. Como vai?
Sua proposta de solução para a organização do portfólio ficou excelente! O código está muito limpo, bem identado e resolve o problema de maneira elegante.
O grande destaque da sua implementação foi a inteligência em lidar com dados ausentes (None). Em cenários reais de engenharia de dados e desenvolvimento de software, é extremamente comum nos depararmos com listas ou bancos de dados que possuem campos vazios, nulos ou corrompidos. Tratar isso com o teste de validação if projeto is not None: impede que o seu programa quebre ou exiba uma informação feia para o usuário final, garantindo o que chamamos de robustez do código.
Para somar aos seus estudos e trazer novas perspectivas para os colegas do fórum, preparei duas dicas: uma sobre como funciona o fluxo de desvio e outra sobre uma palavra-chave do Python que se encaixa perfeitamente nesse cenário.
O Fluxo de Tomada de Decisão com Dados Nulos
Dentro de um laço de repetição, a presença de uma condicional cria uma bifurcação a cada rodada. Veja como o interpretador do Python gerencia a memória quando encontra o elemento None na sua lista:
- Quando o elemento é válido (ex: "jogo"): O teste
if retorna Verdadeiro (True), e o Python executa o bloco que imprime o nome do projeto. - Quando o elemento é
None: O teste if retorna Falso (False), fazendo o Python desviar imediatamente para o bloco do else e imprimir a mensagem de aviso.
Indo Além: Otimizando o Fluxo com a Palavra-Chave continue
A sua solução usando if/else está totalmente correta e é ótima porque mapeia as duas situações possíveis.
Contudo, imagine um cenário onde o seu portfólio tivesse centenas de projetos e, caso o item fosse inválido (None), você quisesse simplesmente ignorá-lo e pular direto para o próximo elemento, sem imprimir nada na tela.
No Python, nós podemos fazer isso usando a palavra-chave continue. Ela serve para interromper a rodada atual do laço e forçar o programa a voltar para o topo, avançando para o próximo item da lista. Veja como o código ficaria limpo:
projetos = ["website", "jogo", "análise de dados", None, "aplicativo móvel"]
print("Exibindo apenas projetos válidos:")
for projeto in projetos:
if projeto is None:
continue # Encontrou um nulo? Ignora o resto do bloco e pula para o próximo!
# Esta linha só será executada se o projeto NÃO for None
print(f"Projeto: {projeto}")
Note que, ao usar o continue, nós eliminamos a necessidade de usar o bloco else, diminuindo o nível de aninhamento do código, o que ajuda muito na legibilidade de sistemas complexos.
Parabéns por mais uma excelente entrega didática e pela consistência impecável nas suas publicações!
Espero que possa ter lhe ajudado!