def main() -> None:
separador: str = '\n-----------------------------------\n'
# Esta primeira abordagem utiliza a característica "truthy/falsy" do Python para tratar valores
# ausentes (None, '') diretamente no loop de impressão, sem pré-processar a lista.
projetos: list = ["website", "jogo", "análise de dados", None, "aplicativo móvel"]
print(f'Lista pré-processamento: {projetos}\n')
print(f'Lista pós-processamento:')
for projeto in projetos:
if projeto:
print(f'{projeto}')
else:
print('Projeto ausente')
print(separador)
# Cria uma nova lista homogênea aplicando o tratamento de 'None' e strings vazias
# via list comprehension. Isso é ideal quando a lista tratada precisa ser usada em outras partes do código.
projetos_tratados = [projeto if projeto else 'Projeto ausente' for projeto in projetos]
print(f'Lista pré-processamento: {projetos}\n')
print(f'Lista pós-processamento:')
for projeto in projetos_tratados:
print(f'{projeto}')
print(separador)
# Esta abordagem lida com listas de tipos mistos. Ela garante que um elemento seja aceito
# apenas se for uma "string" (isinstance) E se possuir "conteúdo" (projeto ser truthy),
# rejeitando números, booleanos, None e strings vazias ("").
projetos = ["", "website", 10, "jogo", 357.5, "análise de dados", None, "aplicativo móvel", True]
projetos_tratados = [projeto if projeto and isinstance(projeto, str) else 'Projeto ausente' for projeto in projetos]
print(f'Lista pré-processamento: {projetos}\n')
print(f'Lista pós-processamento:')
for projeto in projetos_tratados:
print(f'{projeto}')
if __name__ == '__main__':
main()