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

[Dúvida] Para fazer uma validação, como que ficaria?

Fazendo o desafio tentei complicar um pouco e tentei fazer uma validação para que ninguém pudesse coloca datas erradas por exemplo 32/01/-300. Tentei de varias formar mas não consegui alguém poderia ajudar a fazer essa validação?

Uma das soluções que pensei foi, mas não funciona

class Date:
    valido = False

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

    if (0<self.dia>32)&(0<self.mes>13)&(self.ano<0):
            valido = False
    else:
            valido = True




def formatada(self):
    if (valido == False):
        print("{:02d}/{}:02d/{}".format(self.dia,self.mes,self.ano))
    else:
        print("Data Invalida")
3 respostas

Tentei novamente com esse código mas da sempre data impar ele devolve data invalida mas se data é par funciona perfeitamente, alguém sabe o que pode estar acontecendo?

class Date:

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


    def validar(self):
        if (1<=self.dia<=31)or(1<=self.mes<=12)or(self.ano>=1):
            return self.dia , self.mes , self.ano
        else:
            self.dia = 0
            self.mes = 0
            self.ano = 0
            return self.dia , self.mes , self.ano


    def formatada(self):        
        if (self.dia & self.mes & self.ano != 0):
            print("{:02d}/{:02d}/{}".format(self.dia,self.mes,self.ano))
        else:
            print("Data invalida")

boa tarde!

vi seu comentario no discord e pensando um pouco (bastante na verdade) fiz algo assim

class Date: def init(self, dia, mes, ano): self.dia = dia self.mes = mes self.ano = ano

    if (1 <= self.dia <= 31) and (1 <= self.mes <= 12) and (999 < self.ano < 10000):
        self.valido = True
    else:
        self.valido = False

def formatada(self):
    if self.valido:
        print("{:02d}/{:02d}/{}".format(self.dia, self.mes, self.ano))
    else:
        print("Data inválida")

sou novo ainda em programação então pode ter muitos erros, mas talvez de alguma ajuda a você ter ideias para melhorar.

solução!

Achei solução


class Date:

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


    def validar(self):
        if (1<=self.dia<=31)and(1<=self.mes<=12)and(self.ano>=1):
            return self.dia , self.mes , self.ano
        else:
            self.dia = 0
            self.mes = 0
            self.ano = 0
            return self.dia , self.mes , self.ano


    def formatada(self):        
        if (self.dia != 0) and (self.mes != 0) and (self.ano != 0):
            print("{:02d}/{:02d}/{}".format(self.dia,self.mes,self.ano))
        else:
            print("Data invalida")