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

[Dúvida] Praticando Python | 024 | Código | Faça como eu fiz: conversor de tipos

bom dia, apenas para compartilhar conforme orientação do curso.

tenho tentado personalizar os exercícios para tentar fixar os conceitos e entender melhor a linguagem, sei que isso é apenas o começo mas existem momentos que ainda fico perdido na construção dos códigos, digo isso, pois no meu trabalho uso muito o VBA, então o código é meio que uma sequencia, algo do tipo de cima pra baixo na tela sabe, é como se eu escrevesse uma receita ou um texto, construo a logica do algoritmo, escrevo o algoritmo tratando ponto a ponto do processo, até chegar no fim. em Python isso da um bug na minha cabeça, eu monto a função, estruturo o processo e lá no final do código é que entra a interação com o usuário, exemplo: msg = (input('Digite algo:') no meu vicio do dia a dia isso estaria logo no começo sabe?

# Praticando Python | 024 | Código | Faça como eu fiz: conversor de tipos

# Pedro está criando um sistema de cadastro de produtos para sua loja e percebeu que todos os números de telefone dos clientes estão armazenados como strings. No entanto, para facilitar buscas e validações, ele precisa que esses números sejam tratados como inteiros.

# Dado o seguinte código com uma lista de números de telefone armazenados incorretamente como str, faça duas funções, uma que converte os tipos para inteiro e outra que verifica se a conversão foi feita corretamente e todos os números de telefone são inteiros:

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

'''Lista de telefones'''
telefones = ["11987654321", "21912345678", "31987654321", "11911223344"] 

'''Função | Converter uma string para int (texto -> inteiro)'''
def converter_texto(lista):
    return [int(numero) for numero in lista]
    # int(numero):         Faz a conversão de texto para inteiro de cada item da lista.
    # for numero in lista: Ler item a item da lista de telefones. 

'''Função | Validar se o número de telefone é inteiro'''
def validar_numero(lista):
    if all(isinstance(numero, int) for numero in lista):
        return "Conversão foi executada com sucesso!"
    else:
        return "Conversão falhou! Há itens que não são inteiros."
    # isinstance(numero, int) = Vai retorna True se for do tipo int, se não for, reotrna False.
    # (for numero in lista)   = estou usando para produzir True/False para cada número de telefone da lista.
    # all(...)                = Só vai retorna True se todos os valores gerados forem True.

# Chama a função de conversão, criando uma nova lista com os telefones como inteiros.
telefones_convertidos = converter_texto(telefones)

# Exibir a nova lista
print("Convertidos:", telefones_convertidos)


# Mostrar a mensagem
mensagem = validar_numero(telefones_convertidos)
print(mensagem)
2 respostas
solução!

Oii, Estudante.

Primeiramente, parabéns pelo código! Ele tá funcionando perfeitamente e você aplicou conceitos muito interessantes, como a list comprehension (aquela linha [int(numero) for numero in lista]), que é uma forma muito elegante e "pythônica" de resolver problemas.

Sobre esse "bug na cabeça" em relação ao VBA, fique tranquilo que isso é extremamente comum. O que você tá sentindo é a diferença de paradigma na organização. No VBA, muitas vezes escrevemos scripts que funcionam como uma "receita de bolo" lida de cima para baixo: pegue o ovo, quebre o ovo, bata o ovo. É uma execução linear imediata.

No Python, quando usamos funções, nós dividimos o código em dois momentos: o momento de preparação e o momento de ação.

Pense numa oficina mecânica. As linhas onde você escreve def converter_texto(...) e def validar_numero(...) são o momento em que você tá organizando a bancada. Você tá dizendo para o Python: "Olha, se eu precisar converter texto, a ferramenta é essa aqui. Se eu precisar validar, a ferramenta é aquela ali". O Python lê isso, guarda essas "ferramentas" na memória, mas não faz nada com elas ainda.

É por isso que a interação com o usuário ou a execução real acontece lá no final. É só nas últimas linhas que a oficina "abre as portas". O Python já sabe onde estão as ferramentas (porque leu as definições lá em cima) e agora ele finalmente as usa para processar a lista de telefones.

Essa estrutura parece estranha no começo, mas ela é boa porque permite que você organize suas ferramentas apenas uma vez e as use quantas vezes quiser, em qualquer parte do final do seu código, sem precisar reescrever a lógica.

Continue firme! Essa sensação de "código de cabeça para baixo" passa rapidinho conforme você se acostuma a pensar em "criar ferramentas" antes de "usar ferramentas". Seu progresso está ótimo!

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

Muito obrigado!