3
respostas

Desafio opcional ok!!

class Data:

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

    def formatada(self):
        print(f'A data é {self.dia}/{self.mes}/{self.ano}')
3 respostas

Legal!

Vou fazer um complemento que talvez lhe interesse (Porque acabei de responder aqui Implementando Métodos - Desafio Opcional hehe)


Seguinte: se o usuario usa um numero inteiro (sem aspas), como aqui:

data = Data('07', '04', '2022')

data.formatada()

O resultado será

7/4/2022

E não

07/04/2022

Como normalmente seria preferível.


Existe uma sintaxe especial para formatar numeros dentro dos placeholders {}. Vc pode usar {:02d}.

  • " : " aponta que será usada uma sintaxe de formatação.
  • "d" significa aponta que é um digito
  • 02 significa duas casas com zero a esquerda.
    • Se seu numero tiver menos digitos (isto é, numero de 0 a 9) ele preenche os zeros à esqueda para que fiquem duas casas.
    • Se seu número tiver mais dígitos não vai fazer diferença

Exemplos:

print("f{1:02d}")

01

print("f{12:02d}")

12

print("f{123:02d}")

123

No caso ficaria assim ?

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

Isso! Pode testar que funciona.

Mas isso adiciona uma limitação. Agora vai dar um erro se vc tentar usar strings no construtor:

data = Data('07', '04', '2022')
data.formatada()

ValueError: Unknown format code 'd' for object of type 'str'

Isso acontece porque esse formatador ":02d"funciona apenas com números.

Te sugiro tentar resolver essa situação, para que vc possa usar tanto Data("01","01","2022") quanto Data(1,1,2022) e ter a mesma saida!