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

Desafio Opcional

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

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

Pergunta: Não conseguir colocar zeros a esquerda dos números inteiros, pesquisei em alguns fóruns e eles falaram que no Python 3 isso não é permitido devido problemas com números octais . Mas, é possível colocar zeros antes do inteiros usando algum método ?

3 respostas

Oi Adenilson, tudo bem ?

No seu código irá ocorrer um pequeno erro de sintaxe, pois há um ponto após a variável: self.dia. O correto é:

self.dia = dia

Quanto ao preenchimento de zeros, você poderá especificar o número de dígitos, fazendo o seguinte:

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

Ou seja, o primeiro valor terá dois dígitos e caso não tenha, preencha com 0 para que se tenha 2 dígitos. O mesmo ocorre com o segundo valor. Isto é valido para quando estamos trabalhando com inteiros. Pegou a ideia?

Caso estejamos trabalhando com strings, outra técnica pode ser utilizada: zfill(). Segue abaixo o exemplo:

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

    def formatada (self):
        print("{}/{}/{}".format(self.dia.zfill(2), self.mes.zfill(2), self.ano))

data = Data('2','3','2020')
data.formatada()

O zfill preenche com zeros a esquerda caso não atinja o tamanho especificado. No nosso caso, o tamanho especificado é 2, porém, o tamanho da string é 1, então ele preenche com 0 a esquerda até que o tamanho da string seja 2.

Caso queira saber mais a respeito deste método, deixo aqui um artigo sobre o zfill().

Qualquer dúvida estou a disposição. Espero ter ajudado. Bons estudos!!!

Oi, obrigado por aponta o meu erro, ja corrigi aqui, mas o {:02d}/{:02d}/{:2d} ja tinha usado e também não deu para usar o zero a esquerda do número inteiro. Vou tentar o zfill().

solução!

Adenilson, vou deixar aqui o exemplo completo do caso com os inteiros.

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

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

data = Data(2,3,2020)
data.formatada()

Teste e veja se ocorre como esperado :}

Espero ter ajudado. Bons estudos!!!