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

Desafio Opcional, dúvida na formatação da string.

Meu código é este:

class Data:

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

    def formatada(self):
        if (self.mes < 10):
            print("{}/0{}/{}". format(self.dia, self.mes, self.ano))
        else:
            print("{}/{}/{}". format(self.dia, self.mes, self.ano))

Como eu poderia separar dia, mes e ano com barra utilizando a formatação de strings? Seria utilizando .split('/')?

3 respostas

Essa sacada de colocar o '0' para "mes<10" foi de mestre!

solução!

Boa tarde rodrigo tudo bem?

Muito boa ideia de colocar o número 0 nos meses menores que 10. Uma outra maneira mais simples de se realizar a mesma função é utilizando os argumentos opcionais do .format()

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

Da forma acima, tanto o dia e mês estão sendo tratados como tendo 2 dígitos e terá uma 0 como "tapa-buraco", já o ano estou dizendo que deve ter 4 dígitos e, de novo, o 0 como "tapa-buraco".

Já para a sua pergunta:

  • Como eu poderia separar dia, mes e ano com barra utilizando a formatação de strings? Seria utilizando .split('/')?

Uma maneira simples que achei foi utilizar o parâmetro opcional sep=''/ da função print(), porém, algumas mudanças devem ser feitas no código, ficando algo parecido como:

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

Note que cada atributo da nossa classe está sendo "printada" separadamente. Com isso, podemos utilizar o argumento sep="/" para definir que o caractere / ficará responsável por "separar" as informações.

Eu particularmente prefiro usar somente um .format() e colocar o / manualmente, mas claro, a utilização do argumento sep=... pode ser usado para uma maior customização, quem sabe declarando um argumento adicional (e opcional) no método formatada.

Vejo que tudo depende de qual "produto final" você deseja entregar.

Muito obrigado pela atenção

Abraço

Muito obrigado pela ajuda!!