Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
2
respostas

[Projeto] Organizando seu portfólio

projetos = ["website", "jogo", "análise de dados", None, "aplicativo móvel"]

for projeto in projetos:
    if projeto == None:
        print("Projeto ausente")
        continue
    print(projeto)
2 respostas
solução!

Olá, Marcelo. Como vai?

O seu código ficou excelente e muito bem estruturado! Você aplicou a instrução continue exatamente no cenário para o qual ela foi desenhada: limpeza e filtragem de dados brutos.

Em projetos reais, é extremamente comum consumirmos dados de bancos de dados ou de APIs que vêm com campos vazios (os famosos valores None ou Null). Se o seu programa tentasse realizar alguma operação com esse valor ausente (como transformar o texto para maiúsculas ou calcular o tamanho da string), o sistema sofreria uma quebra fatal (runtime error).

A sua lógica identificou o valor ausente, tratou a exceção avisando o usuário e utilizou o continue de forma cirúrgica para pular para o próximo projeto da lista, mantendo o fluxo do programa rodando perfeitamente.

Uma sugestão de boa prática: O operador is para checar None

Embora a comparação utilizando o operador de igualdade (projeto == None) funcione perfeitamente em Python, a comunidade de desenvolvimento e o guia de estilo oficial da linguagem (a PEP 8) recomendam uma abordagem ligeiramente diferente para checar valores nulos.

Em Python, None é um objeto especial único na memória (um singleton). Por conta disso, a boa prática de mercado orienta o uso do operador de identidade is em vez do operador de comparação ==.

Veja como o miolo do seu laço for ficaria utilizando esse padrão profissional:

projetos = ["website", "jogo", "análise de dados", None, "aplicativo móvel"]

for projeto in projetos:
    # A boa prática recomenda usar 'is None' para checar valores nulos
    if projeto is None:
        print("Projeto ausente")
        continue
        
    print(projeto)

Por que usar o is?

Além de deixar a leitura do código mais natural (parecendo inglês fluído: "if projeto is None"), o operador is compara se os dois objetos apontam para o mesmo lugar na memória do computador. Isso torna a checagem ligeiramente mais rápida e previne comportamentos inesperados caso você esteja trabalhando com classes customizadas no futuro.

Parabéns por mais essa excelente solução no fórum do curso! Você demonstrou uma ótima compreensão de como o continue ajuda a manter nossos códigos limpos e organizados.

Espero que possa ter lhe ajudado!

Eu me esqueci desse is, boa também não sabia que er um singleton (padrçao de projeto)