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!
Olá, Alex. Como vai?
Parabéns por alcançar o arquivo Alura ex032.py! É fantástico ver você mantendo essa constância incrível, avançando dia após dia pelos exercícios de fixação e aprofundando o uso de funções estruturadas no PyCharm.
O seu código ficou excelente! Você dividiu o problema de forma modular muito inteligente: criou uma função dedicada puramente para a transformação (converter_para_inteiro) e outra focada estritamente na validação (verificar_conversao). Além disso, o uso da função nativa isinstance() na linha 17 mostra que você já está explorando recursos avançados e elegantes do Python para checar tipos de dados. A saída do terminal confirmou que o fluxo rodou sem falhas.
Para enriquecer ainda mais a sua bagagem e te preparar para cenários reais de desenvolvimento de software, quero compartilhar duas observações técnicas importantes sobre boas práticas e o tratamento de erros em Python:
Assim como vimos nos seus arquivos anteriores, o Python nos permite reduzir a estrutura de loops simples que apenas transformam dados e criam listas novas.
A sua função converter_para_inteiro utiliza um laço for tradicional com .append(). Nós podemos transformá-la em uma única linha usando List Comprehension, deixando o seu código mais enxuto (o famoso padrão pythonico):
def converter_para_inteiro(lista_strings):
return [int(telefone) for telefone in lista_strings]
try / except)Na sua função de validação, você usou o isinstance(telefone, int) para garantir que todos os elementos da lista final se tornaram inteiros. Essa lógica funciona perfeitamente para o seu cenário controlado.
Porém, no mundo real, se a lista original contivesse algum dado corrompido ou inválido (por exemplo, uma string com letras como "119999A9999"), o seu programa sofreria uma interrupção abrupta (Crash) logo no primeiro passo (linha 9), antes mesmo de conseguir chegar na sua função de validação. Isso acontece porque o Python não consegue converter letras em inteiros com o comando int(), gerando um erro chamado ValueError.
Para blindar o seu código contra esse tipo de imprevisto, a melhor prática do mercado é utilizar o bloco try / except (Tratamento de Exceções). Em vez de tentar converter tudo e validar depois, nós tentamos fazer a conversão e capturamos o erro na hora se algo falhar:
def converter_para_inteiro_seguro(lista_strings):
lista_inteiros = []
for telefone in lista_strings:
try:
# Tenta converter o número
lista_inteiros.append(int(telefone))
except ValueError:
# Se o texto contiver letras, captura o erro e avisa o usuário
print(f"Erro: O valor '{telefone}' não pôde ser convertido para inteiro.")
return None
return lista_inteiros
Dessa forma, o seu próprio conversor já se torna autovalidável e impede que o programa pare de funcionar inesperadamente na mão do usuário final.
Parabéns pelo excelente design do código, pelos comentários impecáveis e pela dedicação exemplar que você vem mantendo ao longo de toda essa sequência de mais de 30 exercícios!
Espero que possa ter lhe ajudado!