Olá, Christian, como vai?
A lógica geral atende bem ao que a atividade propõe, com separação clara de responsabilidades entre as funções, validação de dados de entrada e um fluxo organizado para execução do programa. A ideia de tratar erros e permitir nova tentativa também demonstra cuidado com a experiência de uso.
Há apenas um ponto técnico que merece ajuste. Na função mostrar_produtos, a f-string utiliza aspas duplas tanto para definir a string quanto para acessar as chaves do dicionário, o que pode gerar erro de sintaxe em Python. Basta trocar as aspas internas por aspas simples para evitar esse conflito e manter a interpolação funcionando.
Continue compartilhando suas atividades e experimentando variações no código, o fórum fica à disposição para acompanhar sua evolução.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!