Solucionado (ver solução)

Importante

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!

Solucionado
(ver solução)
1
resposta

Faça como eu fiz: conversor de tipos

def converter_numeros(telefones):
    return [int(numero) for numero in telefones]


def verificar_conversao(telefones):
    for telefone in telefones:
        if type(telefone) != int:
            return "Erro na conversão."

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


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

telefones_convertidos = converter_numeros(lista_telefones)

print(verificar_conversao(telefones_convertidos))

fiz outra verção só por pratica

numeros_telefone = []
numeros_convertidos = []

def converter_numero():
    if not numeros_telefone:
        print("Nenhum telefone cadastrado para converter.")
        return

    for contato in numeros_telefone:
        numero_str = contato["numero"]

        numero_limpo = "".join(char for char in numero_str if char.isdigit()) #<-- isso não foi uma ideia original minha.

        try:
            numero_int = int(numero_limpo)
        except ValueError:
            print(f"Não foi possível converter o número de {contato['nome']}.")
            continue

        numeros_convertidos.append({
            "nome": contato["nome"],
            "numero": numero_int
        })

    print("Conversão realizada com sucesso.")

def cadastrar_telefone():
    user = input("Nome do usuario: ")
    numero_telefone = input("numero do telefone: ")

    telefone = {
        "nome": user,
        "numero": numero_telefone
    }

    numeros_telefone.append(telefone)
    print("Cadastro realizado com sucesso.")

def listar_convertidos():
    if not numeros_convertidos:
        print("Nenhum telefone convertido ainda.")
        return
    for contato in numeros_convertidos:
        print(f"{contato['nome']}: {contato['numero']} ({type(contato['numero'])})")

def menu():
    while True:
        print("\n1. Cadastrar telefone.")
        print("2. Converter telefone.")
        print("3. Listar telefones (Convertidos).")
        print("0. Sair")

        try:
            opcao = int(input("Escolha uma opção: "))
        except ValueError:
            print("Digite um número válido.")
            continue

        match opcao:
            case 0:
                break
            case 1:
                cadastrar_telefone()
            case 2:
                converter_numero()
            case 3:
                listar_convertidos()
            case _:
                print("Opção inválida.")

def main():
    menu()

if __name__ == "__main__":
    main()
1 resposta
solução!

Fala, Vinicius! Tudo bom?

Agradeço por trazer sua solução para o fórum!

Curti demais como trabalhou a conversão de strings em inteiros para validar telefones com Python, entendeu perfeitamente a importância da verificação de tipos para garantir consistência nos dados e usou bem a estrutura de menu interativo com match-case para organizar as opções de cadastro, conversão e listagem.

Algo bem legal para complementar é aplicar uma validação de tamanho antes da conversão, garantindo que o número tenha a quantidade correta de dígitos. Dessa maneira:

numero_str = contato["numero"]
numero_limpo = "".join(char for char in numero_str if char.isdigit())
if len(numero_limpo) == 11:  # exemplo para celulares brasileiros
    numero_int = int(numero_limpo)
    numeros_convertidos.append({
        "nome": contato["nome"],
        "numero": numero_int
    })
else:
    print(f"Número inválido para {contato['nome']}.")

Isso faz com que apenas números válidos sejam aceitos, evitando inconsistências.

E algumas boas práticas que você pode adotar são:

  • Organização: separar funções em módulos para deixar o código mais limpo.
  • Persistência: salvar os contatos em arquivo JSON para manter os dados entre execuções.
  • Feedback: retornar mensagens mais detalhadas ao usuário sobre erros ou sucesso nas operações.

Continue postando as suas soluções! Além de ganhar pontos de XP na plataforma, você pode ajudar outros estudantes no fórum.

Alguns materiais podem estar em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Ah, uma pergunta: o que você prefere, evoluir esse projeto para uma agenda completa com persistência em arquivo ou mantê-lo apenas como prática de lógica e estruturas de controle?

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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