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!