Olá pessoal!
Tudo bem?
Baseado na aula, comecei a criar uma classe para validar um número de celular (formato brasileiro), mas não estou conseguindo concluir o código para que se ele tiver um número inválido ele possa me retornar uma frase, como por exemplo "Inválido".
Deduzo que não estou conseguindo prosseguir, porque não entendi o que de fato ele está me retornando quando retorna False, no valida_celular do _ init _.
- Tentei fazer: um print('Número inválido'), mas não tem muito sentido, porque ele acaba passando pelo _ str _ e já dá o primeiro erro e depois entra no formata_numero.
Deveria criar uma função que pudesse tratar esse False ?
Possivelmente é apenas lógica, mas fiquei travado nesse problema.
Vocês poderiam me auxiliar a entender melhor e destravar esse problema?
Segue classe:
import re
class CelularBr():
"""
Esta classe irá validar o número de celular, retornando-o
no formato padrão do Brasil: (xx) xxxxx-xxxx.
Caso o número não seja válido, retornará a mensagem:
"Número inválido"
"""
def __init__(self, celular):
celular = str(celular)
if self.valida_celular(celular):
self.celular = celular
else:
raise ValueError('Número inválido')
def __str__(self):
return self.formata_numero()
def valida_celular(self, celular):
"""
Esta função irá validar (com Regex) o número de celular
com o DDD.
Retornando True ou False.
"""
padrao = '[1-9]{2}9[5-9]{1}[0-9]{7}'
primeira_validacao = re.findall(padrao, celular)
if primeira_validacao:
segundo_padrao = '0{6}|1{6}|2{6}|3{6}|4{6}|5{6}|6{6}|7{6}|8{6}|9{6}'
segunda_validacao = re.findall(segundo_padrao, primeira_validacao[0])
if segunda_validacao:
return False
else:
return True
else:
return False
def formata_numero(self):
"""
Esta função retornará o o número formatado no padrão:
(xx) xxxxx-xxxx.
"""
padrao = '([1-9]{2})(9[0-9]{4})([0-9]{4})'
resposta = re.search(padrao,self.celular)
ddd = resposta.group(1)
primeiros_digitos = resposta.group(2)
ultimos_digitos = resposta.group(3)
numero_formatado = (f"({ddd}) {primeiros_digitos}-{ultimos_digitos}")
return numero_formatado
Segue main que estava testando:
from celularBr import CelularBr
import re
celular = 199916666669
#celular = 19991250339
celular_objeto = CelularBr(celular)
print(celular_objeto)