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

Python não aceita números que iniciam com zero

Essa é a programação, mas o Python não entende datas que iniciam com zero:

class Datas:

    def __init__(self, dia, mes, ano):
        self.dia = str(dia)
        self.mes = str(mes)
        self.ano = str(ano)
        print("{}/{}/{}".format(self.dia, self.mes, self.ano))
        print(f"{self.dia}/{self.mes}/{self.ano}")
        print(self.dia, self.mes, self.ano, sep="/")

Podem me ajudar?

2 respostas
solução!

Opa, não sou instrutor mas vi a pergunta e decidi estudar um pouco. No python 3 números que iniciam com 0 não são aceitos como válidos, assim sendo, tem essas duas formas aí pra tentar resolver:

#Forma 1 (Provavelmente a mais correta) = Já passar os parametros dentro de string""
class Datas:

    def __init__(self, dia, mes, ano):
        self.dia = dia
        self.mes = mes
        self.ano = ano
        print("{}/{}/{}".format(self.dia, self.mes, self.ano))
        print(f"{self.dia}/{self.mes}/{self.ano}")
        print(self.dia, self.mes, self.ano, sep="/")

data = Datas("01", "08", "2021")


#Forma 2 (Gambiarra)= Colocar o "0" manualmente depois do teu número
class Datas:

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


    def validar_data(self):

        if self.dia < 10:
            self.dia = str(self.dia)
            self.dia = "0" + self.dia

        if self.mes < 10:
            self.mes = str(self.mes)
            self.mes = "0" + self.mes


    def printar_datas(self):
        self.validar_data()
        print("{}/{}/{}".format(self.dia, self.mes, self.ano))
        print(f"{self.dia}/{self.mes}/{self.ano}")
        print(self.dia, self.mes, self.ano, sep="/")


data = Datas(9, 2, 2021)
data.printar_datas()

A resposta #1 funcionou. Obrigado!