1
resposta

O que está dando errado? O código está igual ao do professor. Aula criando mascara para numeros

codigo dando erro, mas está igual ao do professor. Aula definição de padrões:

codigo:

import re

class TelefonesBr:

def __init__ (self, telefone):
    if self.valida_telefone(telefone):
        self.numero = telefone
    else:
        raise ValueError("Numero incorreto!")

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


def valida_telefone(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_numero(self):
    padrao =  "([0-9]{2,3}) ? ([0-9]{2}) ([0-9]{4,5}) ([0-9]{4})"
    resposta = re.search(padrao, self.numero)
    numero_formatado = "+{} {()} - {}".format(resposta.group(1),
                                              resposta.group(3),
                                              resposta.group(4)
                                              )
    print (numero_formatado)

codigo main

from TelefonesBr import TelefonesBr import re

telefone = "558599644650" telefone_objeto = TelefonesBr(telefone)

print(telefone_objeto)

Mensagem de erro

File "/home/joao/PycharmProjects/brasilidades/main.py", line 5, in telefone_objeto = TelefonesBr(telefone) File "/home/joao/PycharmProjects/brasilidades/TelefonesBr.py", line 9, in init raise ValueError("Numero incorreto!") ValueError: Numero incorreto!

Process finished with exit code 1

Alguém poderia me ajudar? Desde já agradeço

1 resposta

Remova os espaços de padrao.

Em numero_formatado, coloque os parênteses por fora e as chaves dentro.

Troque print(telefone_objeto) por telefone_objeto.format_numero()