1
resposta

raise ValueError, não reconhece o número informado

Em meu arquivo telefonesBr.py:


import re


class Telefones:

    def __init__(self, telefone):
        print('Número recebido:', telefone)  # debug

        if self.valida_tel(telefone):
            self.numero = telefone
        else:
            raise ValueError('Número incorreto!')

    def __str__(self):
        return self.format_num()

    def valida_tel(self, telefone):
        padrao = "([0-9]{2,3})?([0-9]{2})([0-9]{4,5})-([0-9]{4})"
        resposta = re.findall(padrao, telefone)
        if resposta:
            return True
        else:
            return False

    def format_num(self):
        padrao = "([0-9]{2,3})?([0-9]{2})([0-9]{4,5})-([0-9]{4})"
        resposta = re.search(padrao, self.numero)
        numero_format = '+{}({}){}-{}'.format(
            resposta.group(1),
            resposta.group(2),
            resposta.group(3),
            resposta.group(4)
        )
        return numero_format


if __name__ == '__main__':
    telefone = '552126481234'
    telefone_obj = Telefones(telefone)
    print(telefone_obj)

main.py

from telefonesBr import Telefones

telefone = '552126481234'

telefone_obj = Telefones(telefone)

print(telefone_obj)

Está me retornando no terminal a seguinte mensagem:

C:\Users\Feulo\PycharmProjects\Bytebank\venv\Scripts\python.exe C:\Users\Feulo\PycharmProjects\Bytebank\telefonesBr.py 
Traceback (most recent call last):
  File "C:\Users\Feulo\PycharmProjects\Bytebank\telefonesBr.py", line 38, in <module>
    telefone_obj = Telefones(telefone)
                   ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Feulo\PycharmProjects\Bytebank\telefonesBr.py", line 11, in __init__
    raise ValueError('Número incorreto!')
ValueError: Número incorreto!
Número recebido: 552126481234

Process finished with exit code 1

Testei diversos números diferentes.. e nada

1 resposta

Olá Mathues, tudo bem?

Veja que a sua expressão regular tem um "-", portanto, só vai funcionar se o telefone ficar assim '55212648-1234'. Veja como fica o seu main

from teste import Telefones

telefone = '55212648-1234'

telefone_obj = Telefones(telefone)

print(telefone_obj)

a saída esperada é:

+55(21)2648-1234

Experimenta aí e nos retorne. Abraços!