1
resposta

Prática - Conversor de tipos

def converter_para_inteiros(lista_telefones):
    return [int(telefone) for telefone in lista_telefones]

def verificar_conversao(lista_telefones):
    if all(isinstance(telefone, int) for telefone in lista_telefones):
        print("Todos os números foram convertidos corretamente!")
    else:
        print("A conversão não foi feita corretamente.")

# Exemplo de uso:
telefones = ["11987654321", "21912345678", "31987654321", "11911223344"]

telefones_convertidos = converter_para_inteiros(telefones)
verificar_conversao(telefones_convertidos)

Entrada:

telefones = ["11987654321", "21912345678", "31987654321", "11911223344"]

Saída:

Todos os números foram convertidos corretamente!
1 resposta

Olá, Aristóteles. Como vai?

Parabéns pelo excelente código! A sua solução ficou super elegante, limpa e demonstra um uso avançado de recursos nativos do Python que muitos desenvolvedores demoram a dominar.

A combinação de List Comprehension na função de conversão com a função nativa all() na função de verificação foi uma escolha brilhante. Vamos entender o porquê de o seu código ser considerado de altíssimo nível:

  • A função all(): Ela é uma das ferramentas mais performáticas do Python para validações. Ela varre o gerador interno e só retorna verdadeiro se todas as condições forem reais. Se apenas um único elemento falhasse no teste isinstance(telefone, int), ela interromperia a leitura e retornaria falso imediatamente (comportamento conhecido como short-circuit).
  • O método isinstance(): Utilizar isinstance(objeto, tipo) é a prática recomendada no Python em vez de comparar diretamente usando type(objeto) == int. O isinstance é mais seguro porque ele também leva em consideração a herança de classes.

Como você está explorando o poder das funções e trabalhando com processamento de listas, quero te apresentar uma alternativa muito utilizada no mercado que substitui a List Comprehension: a função nativa map().

A função map(funcao, sequencia) serve exatamente para aplicar uma transformação (como o int) a todos os elementos de uma lista de uma só vez, sem que você precise escrever o laço for manualmente.

Veja como a sua primeira função poderia ser reescrita de forma ainda mais enxuta usando o map():

def converter_para_inteiros(lista_telefones):
    # O map aplica a função int a cada elemento e depois convertemos o resultado de volta para uma lista
    return list(map(int, lista_telefones))

Uma dica importante sobre o cenário real que você escolheu (números de telefone): embora a conversão para inteiro funcione perfeitamente para o exercício de lógica, no dia a dia do desenvolvimento de software costumamos manter telefones, CEPs e CPFs como strings (texto).

O motivo disso é duplo: números inteiros removem automaticamente os zeros à esquerda (o que destruiria um telefone que começa com 0800, por exemplo) e também impedem que a gente guarde caracteres de formatação importantes, como os parênteses do DDD ou o hífen.

O seu código está impecável para o objetivo da atividade de conversão de tipos. Continue com essa consistência e excelente escrita de código!

Espero que possa ter lhe ajudado!