Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desafio Opcional de Int. a Orientação a Objetos e um "bônus".

Desafio

from datas import Data
d = Data(21,11,2007)
d.formatada()

Código que eu fiz para tentar solucionar o desafio.

data.py

class Data:
    def __init__(self, dia, mes, ano):

        self.dia = dia
        self.mes = mes
        self.ano = ano

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

E por questão de curiosidade eu decidi ir um pouco a fundo com relação a datas e afins, procurei se era possível automatizar as datas e fazer com que aparecessem em um preriodo de tempo especifico em loop com "while".

auto_data.py

import time

from datetime import datetime

while(True):

    d_a   = datetime.date(datetime.now())
    h_a   = datetime.time(datetime.now())
    texto = f'A data atual é {d_a.day:02d}/{d_a.month:02d}/{d_a.year:04d} e são {h_a.hour:02d}:{h_a.minute:02d}:{h_a.second:02d} horas.'

    print(texto)
    time.sleep(2)

#referência para melhor compreensão.
#d_a = data_atual
#h_a = hora_atual

Segundo formato do "texto":

texto = "A data atual é {:02d}/{:02d}/{:04d} e são {}:{:02d}:{:02d}.".format(d_a.day, d_a.month, d_a.year, h_a.hour, h_a.minute, h_a.second)

Se alguem tiver alguma idédia legal para diminuir a linha "texto". Eu fiz de duas formas, mas ambas ainda ficaram extensas. É isso ai, espero que gostem. :)

2 respostas
solução!

Vai ganhar uns caracteres de espaço se deixar de usar o .format e usar o f_string da versão 3 do python

Antes:

texto = "A data atual é {:02d}/{:02d}/{:04d} e são {}:{:02d}:{:02d}.".format(d_a.day, d_a.month, d_a.year, h_a.hour, h_a.minute, h_a.second)

Depois:

texto = f"A data atual é {d_a.day:02d}/{d_a.month:02d}/{d_a.year:04d} e são {h_a.hour}:{h_a.minute:02d}:{h_a.second:02d}."

Menor que isso talvez você possa diminuir o nome das variáveis, rs.

Eu tentei deixar menor mas realmente so diminuindo as variaveis mesmo. Obrigado Thiago Matos