Oi, Marcelo, como vai?
O código está correto e o uso de is not None para verificar a ausência de valor é a forma mais idiomática de fazer essa checagem em Python. Comparações com None devem usar is ou is not em vez de == ou !=, e você já aplicou isso corretamente.
Vale mencionar que essa distinção existe porque is verifica identidade de objeto, ou seja, se a variável aponta exatamente para o objeto None, enquanto == verifica igualdade de valor. Para None, a convenção do Python é sempre usar is, e o próprio analisador de código da linguagem recomenda isso.
Pensando no programa, como você o modificaria para, além de exibir os projetos válidos, contar e exibir ao final quantos projetos estavam ausentes na lista?
Parabéns pelo exercício e obrigado por compartilhar. O fórum está à disposição sempre que precisar.
Para saber mais:
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!