2
respostas

Resolução Desafio Opcional (datas)

class Data:

    def __init__(self):
        data = input('Digite a data de nascimento: ')
        data_formatada = data.split("/")
        self.__dia = int(data_formatada[0])
        self.__mes = int(data_formatada[1])
        self.__ano = int(data_formatada[2])


    def imprime_data(self):
        if self.__dia < 10:
            print(f'0{self.__dia}/{self.__mes}/{self.__ano}')
        else:
            print(f'{self.__dia}/{self.__mes}/{self.__ano}')
2 respostas

Oii Bruno, como você está?

Seu código está correto. Tenho apenas uma ressalva:

  • Você validou o dia para ser acrescentado o valor 0 caso o número seja menor que 10. Porém, não fez o mesmo para o mês. E sendo assim, podemos ter casos como o mostrado abaixo:
>> Digite a data de nascimento: 2/4/2020
>> 02/4/2020

Observe que o mês não foi acrescido de um zero a esquerda para números menores que 10, mas seria interessante colocar.

Uma maneira simples de validarmos todas as formatações de 0 a esquerda, é utilizarmos as especificações de formato de uma string.

Veja como fica em código:

    def imprime_data(self):
        print(f'{self.__dia:02d}/{self.__mes:02d}/{self.__ano:04d}')

No código acima, 02d formata um número inteiro(d) para um campo de largura mínima 2 (2), com preenchimento de zero à esquerda (0). E mesma ideia se repete para o 04d no campo de ano.

Mais detalhes e curiosidades sobre esse tipo de formatação você pode conferir neste link da documentação do Python.

Vale ressaltar também que quanto mais contato você for tendo com a linguagem, a tendência é que utilize a biblioteca Datetime para datas, mas isso é assunto para os próximos capítulos hahaha

Qualquer dúvida estou por aqui, tá bom?

Abraços e bons estudos!

class Data:

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

def formata(self):
    print(f'{self.__dia:02d}/{self.__mes:02d}/{self.__ano:04d}')

d = Data(21,11,2007)

d.formata()

#Não estou usando o tratamento de erro e exceções [ try: ... except() ]

#E para validar a entrada dos parametros...

#Aceitando apenas numeros ( variavel.isdigit() )