1
resposta

[Sugestão] Faça como eu fiz: conversor de tipos

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

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:


1. Simplificando a Conversão com List Comprehension

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]

2. Tratamento de Exceções Reais (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!