1
resposta

Desafio Opicional: Classe Datas

Segue implementação simplificada do desafio:

class Datas:
    def __init__(self, dia, mes, ano):
        self.dia = str(dia) if len(str(dia)) >= 2 else f"0{dia}"
        self.mes = str(mes) if len(str(mes)) >= 2 else f"0{mes}"
        self.ano = str(ano)

    def formatar_data(self):
        print(f"{self.dia} / {self.mes} / {self.ano}")
1 resposta

Olá João, tudo bem com você?

Meus parabéns pela criação do código e por está compartilhando com a comunidade do fórum Alura.

Vi que você implementou o código para conferir como foi informado o valor do dia e do mês, completando com zero (0) antes dos números menores que 10, para conhecimento, deixo abaixo uma outra forma que podemos realizar essa formatação.

Podemos implementar a função formatar_data(self) com a manipulação dos valores do dia e mês para que sejam fornecidos em um padrão determinado, para isso devemos inserir nas data valores do tipo int, deixo abaixo um exemplo:

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

No exemplo acima :02d formata um inteiro (d) para um campo de largura mínima 2 (2), com preenchimento de zero à esquerda, quando a largura mínima de dois caracteres não for atendida. Então, caso passássemos a data 2/4/2022, seria preenchido com zeros a esquerda, como mostro abaixo:

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

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


d = Datas(2, 4, 2022)
d.formatar_data()

# Resultado

02/04/2022

Para saber um pouco mais sobre a formatação de string recomendo esse artigo Anatomy of String Formatting in Python em português: Anatomia da string - formatando em Python. Caso tenha dificuldades com o idioma, recomendo que use o tradutor que existe no navegador.

Coloco-me à disposição em caso de dúvidas.

Abraços e bons estudos.