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

Desafio - Como imprimir meses com Zero a esqueda

Olá colegas, queria pedir uma sugestão! Será possível incrementar esse código, digo, fazer ele de uma forma diferente ou ele é simples assim mesmo?

class Datas:

def __init__(self, dia, mes, ano):
    print("Contruindo objeto ... {}".format(self))
    self.dia = dia
    self.mes = mes
    self.ano = ano
def formatada(self):
    print("{} / {} / {}".format(self.dia, self.mes, self.ano))

Saída: 21/11/2007


Por exemplo, ao tentar imprimir uma data com meses que possui um ZERO a frente como Março (03), segue o erro:

d = Datas(22,03,2021)

            ^

File "<input", line 1 SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers.


Ao corrigir a saida, fica:

d = Datas(22,0o3,2021)

E imprime:

22 / 3 / 2021

Sem o Zero antes do Três. Queria uma sugestão de como automatizar o Zero e que não precisasse mexer no código sempre para imprir números na casa das dezenas.

2 respostas
solução!

Olá Eduardo, o desafio é isso mesmo que você fez, já está bem legal!

A origem do erro é que o python não aceita números com zeros à esquerda, como 03. Uma possibilidade para você adicionar isso no seu código é aplicar uma formatação no valor:

print("{} / {:02d} / {}".format(self.dia, self.mes, self.ano))

# Teste:
d = Datas(22,3,2021)
d.formatada()

# Resultado: 22 / 03 / 2021

Esse :02d indica que o valor deve ser formatado para ter 2 dígitos preenchidos com 0 quando necessário.

Espero ter ajudado, qualquer dúvida é só falar!

Muito obrigado Lucas! :)