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!

1
resposta

Faça como eu fiz: conversor de tipos

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

def titulo(txt):
    print('=' * len(txt))
    print(txt)
    print('=' * len(txt))

def conversao(telefones):
    for i in range(len(telefones)):
        telefones[i] = int(telefones[i])
    return telefones

def verificacao_numeros(lista_convertida):
    for num in lista_convertida:
        if not isinstance(num, int):
            print(f'O numero {num} não foi convertido')
            return        
            
    print('Todos os números foram convertidos corretamente.')


def main():
    titulo('CONVERSOR DE NÚMEROS')
    lista_convertida = conversao(telefones)
    verificacao_numeros(lista_convertida)

if __name__ == '__main__':
    main()
1 resposta

Olá, Giovanni. Como vai?

Parabéns pela resolução do desafio! O seu código ficou super organizado, modular e legível. A separação em funções com propósitos específicos (exibir o título, converter os dados e verificar os tipos) seguindo a estrutura padrão if __name__ == '__main__': é uma excelente prática de desenvolvimento em Python.

Aproveitando que você compartilhou o seu código para praticar funções, preparei algumas sugestões e complementos técnicos para enriquecer ainda mais o seu aprendizado sobre manipulação de listas e boas práticas na linguagem:

1. Efeito Colateral e Mutabilidade (Conceito Importante)

No Python, as listas são objetos mutáveis. Quando você passa a lista telefones para a sua função conversao(telefones), qualquer alteração feita nos índices (telefones[i] = ...) modifica diretamente a lista original que está fora da função.

Em sistemas maiores, alterar a lista original dentro de uma função pode gerar comportamentos inesperados em outras partes do código. Uma boa prática é fazer com que a função crie e retorne uma nova lista, preservando os dados originais intactos.

2. Otimizando a Conversão com List Comprehension

Em vez de usar o for i in range(len(...)), o Python nos oferece uma forma muito mais elegante e performática de transformar listas, chamada List Comprehension. Ela permite criar a nova lista convertida em apenas uma linha de código:

def conversao(telefones):
    # Cria uma nova lista com os números convertidos sem alterar a original
    return [int(num) for num in telefones]

3. Simplificando a Verificação com a Função all()

Na sua função verificacao_numeros, você fez um laço para checar se todos os elementos são inteiros. O Python possui uma função nativa chamada all(), que combinada com um gerador, verifica se todas as condições de uma lista são verdadeiras de forma muito direta:

def verificacao_numeros(lista_convertida):
    # Verifica se a condição isinstance é verdadeira para todos os itens
    if all(isinstance(num, int) for num in lista_convertida):
        print('Todos os números foram convertidos corretamente.')
    else:
        print('Detectamos um ou mais números que não foram convertidos.')

Abaixo, veja como o seu código completo ficaria aplicando essas práticas de escrita idiomática do Python (o famoso código pythônico):

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

def titulo(txt):
    print('=' * len(txt))
    print(txt)
    print('=' * len(txt))

def conversao(lista_original):
    return [int(num) for num in lista_original]

def verificacao_numeros(lista_convertida):
    if all(isinstance(num, int) for num in lista_convertida):
        print('Todos os números foram convertidos corretamente.')
    else:
        print('Houve um erro: nem todos os números são inteiros.')

def main():
    titulo('CONVERSOR DE NÚMEROS')
    lista_convertida = conversao(telefones)
    verificacao_numeros(lista_convertida)

if __name__ == '__main__':
    main()

Sua lógica lógica de programação está excelente e o uso de funções para isolar os comportamentos foi muito bem aplicado. Continue praticando e postando seus códigos!

Espero que possa ter lhe ajudado!