3
respostas

Resolvido - Porém Argumento 0

class Data:

    def __init__(self, dia, mes, ano):
        self.dia = dia
        self.mes = mes
        self.ano = ano

    def formatada(self):
        print('{}/{}/{}'.format(self.dia, self.mes, self.ano))

Solucionado porém ao indicar no console o valor do mês com valores ("01, 02, 03...") iniciados por 0, ele devolve um erro de Syntax. Tentei adicionar dessa forma {:02d}/{:02d}/{:02d} no print, porém o erro persiste. Python3.9

3 respostas

Olá Thiago, tudo bem? Espero que sim!

Você poderia utilizar uma maneira mais nova de formatação da linguagem Python, a formatação com f-strings:

def formatada(self):
    print(f'{self.dia:02d}/{self.mes:02d}/{self.ano}')

Mas você não pode instanciar o objeto passando um número com 0 a esquerda. Se fizer algo como o que está abaixo no Python, ocorrerá o erro:

data = Data(04,05,2020)

Você deve instanciar o objeto passando números inteiros:

data = Data(4,5,2020)

O Python não vai entender um número inteiro se passar um zero à esquerda. Se quiser passar diretamente os zeros, terá de fazer em formato de strings, removendo as formatações de inteiro :02d:

class Data:

    def __init__(self, dia, mes, ano):
        self.dia = dia
        self.mes = mes
        self.ano = ano

    def formatada(self):
        print(f'{self.dia}/{self.mes}/{self.ano}')

data = Data('04','05','2020')
data.formatada()

Bons estudos!

Removido a pedido do usuario.

Olá Gabriel,

Você pode colocar sim dessa forma. Eles ficarão salvos como strings, mesmo que passe números inteiros na criação do objeto. Mas ainda assim não será permitido escrever data = Data(04,05,2020), já que o Python não vai conseguir interpretar o número 04 e 05, uma vez que possui 0 à esquerda e isso ocorre antes da transformação para strings.

Espero que tenha entendido. Bons estudos!