1
resposta

Desafio opcional - python 3

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

    def formata(self):
        if self.dia > 31:
            print("dias só vão até o dia 31")
        elif self.mes > 12:
            print("só existe 12 meses")
        elif self.mes == 2 and self.dia >= 29:
            print("fevereiro só vai ate o dia 29 no ano bissexto")
        else:
            print("{}/{}/{}".format(self.dia, self.mes, self.ano)

1 resposta

Oi, Juan! Legal sua solução! Mas repara uma coisa, olha tudo o que você tá fazendo na função formata(). O ideal é que essa função faça apenas isso, justamente formatar, que é o que você faz na última linha com o print bonitinho. Esses ifs todos são legais para se ter uma data correta, mas talvez não sejam ideais no lugar onde estão. Aliás, será que a gente deveria permitir que o usuário crie uma data que não existe? Se não, não é o caso da gente fazer essas verificações logo quando o usuário tenta criar um objeto Data, ou seja, no método construtor?

Mais uma coisa: Esse código assume que será rodado sempre para uma data cujo ano não é bissexto, não é? Por isso o dia 29 de fevereiro nunca é aceito. Você consegue pensar em um jeito que verifique se o ano é bissexto ou não para permitir (ou não) o dia 29 de fevereiro?