Olá, Samara, como vai?
Sua solução atende corretamente ao que o exercício propõe e o laço percorre a lista como esperado, exibindo tanto os projetos válidos quanto a mensagem para o item ausente. Obrigado por compartilhar seu raciocínio no fórum.
Sobre a sua dúvida, em Python o operador == compara valores, enquanto o is verifica identidade, ou seja, se duas referências apontam para o mesmo objeto na memória. No caso específico do None, a forma mais adequada é usar is None, pois existe apenas uma instância de None no Python e a verificação fica mais clara semanticamente.
O fórum segue à disposição para dúvidas e trocas, e fique à vontade para continuar compartilhando suas soluções e aprendizados.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!