Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Faça como eu fiz: conversor de tipos

# Lista inicial de telefones em strings
telefones = ["11987654321", "21912345678", "31987654321", "11911223344"]

def converter_para_inteiro(lista_str):
    lista_inteiros = []
    for telefone in lista_str:
        # Converte a string atual para inteiro e adiciona na nova lista
        lista_inteiros.append(int(telefone))
    return lista_inteiros

def verificar_conversao(lista_convertida):
    for telefone in lista_convertida:
        # isinstance(objeto, tipo) checa se a variável é daquele tipo específico
        if not isinstance(telefone, int):
            return "Ops, algo deu errado! Nem todos os números são inteiros."
            
    # Se o loop terminar sem encontrar erros, está tudo perfeito
    return "Todos os números foram convertidos corretamente!"

# --- Executando o Sistema ---

# 1. Fazemos a conversão
telefones_convertidos = converter_para_inteiro(telefones)

# 2. Fazemos a verificação e guardamos o resultado
resultado_validacao = verificar_conversao(telefones_convertidos)

# 3. Mostramos a saída esperada
print(resultado_validacao)
print(telefones_convertidos)
2 respostas

Oi, estudante, como vai?

Sua solução atendeu corretamente ao que a atividade propôs. Você criou as duas funções separadamente, utilizou a conversão com int() da forma esperada e ainda aplicou isinstance() para validar os tipos após a conversão, o que mostrou uma boa compreensão sobre verificação de tipos em Python.

O uso de comentários também ajudou bastante na leitura do código, principalmente para explicar o objetivo das funções e da validação. Além disso, a separação das etapas de execução deixou o fluxo mais organizado.

Como dica de evolução, você poderia futuramente adicionar um tratamento de erro para impedir falhas caso algum telefone contenha letras ou caracteres inválidos durante a conversão.

Pensando em um sistema real de cadastro, como você faria para validar se o telefone possui exatamente a quantidade correta de dígitos antes da conversão?

Parabéns pela atividade e obrigado por compartilhar sua solução no fórum. Continue praticando funções e manipulação de tipos em Python, o fórum segue à disposição para acompanhar sua evolução.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!
solução!

Obrigado pelo feedback!

Em um sistema real, eu faria essa validação usando o len() antes da conversão, para conferir se o telefone tem a quantidade certa de dígitos. Também daria para usar o isdigit() para garantir que o valor tenha apenas números. Assim, se o telefone estivesse fora do padrão, o sistema poderia avisar o erro antes de converter para inteiro e evitar problemas no cadastro.

# Lista inicial de telefones em strings
telefones = ["11987654321", "21912345678", "31987654321", "11911223344"]

def validar_telefone(telefone):
    # Verifica se possui apenas números
    if not telefone.isdigit():
        return False

    # Verifica se possui 10 ou 11 dígitos
    if len(telefone) not in [10, 11]:
        return False

    return True

def converter_para_inteiro(lista_str):
    lista_inteiros = []

    for telefone in lista_str:

        # Faz a validação antes da conversão
        if validar_telefone(telefone):
            lista_inteiros.append(int(telefone))
        else:
            print(f"Telefone inválido: {telefone}")

    return lista_inteiros

def verificar_conversao(lista_convertida):

    for telefone in lista_convertida:

        # Verifica se todos são inteiros
        if not isinstance(telefone, int):
            return "Ops, algo deu errado! Nem todos os números são inteiros."

    return "Todos os números foram convertidos corretamente!"

# --- Executando o Sistema ---

# 1. Faz a conversão
telefones_convertidos = converter_para_inteiro(telefones)

# 2. Faz a verificação
resultado_validacao = verificar_conversao(telefones_convertidos)

# 3. Mostra os resultados
print(resultado_validacao)
print(telefones_convertidos)