1
resposta

DESAFIO QUASE RESOLVIDO

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

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


Quando eu coloco um 0 antes do dia ou mês, no formato : 02,02,2022 aparece

SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers

Mas, se eu chamo

data = Data(7,7,2022)
data.data_formatada()

nesse caso ele imprimi normal.

Como resolver a questão do zero??? no caso se eu chamar da seguinte maneira :

data = Data(07,07,2022)
data.data_formatada()

aparece :

SyntaxError: leading zeros in decimal integer literals are not permitted; use an 0o prefix for octal integers
1 resposta

Olá Tamires, tudo bem com você?

O Python não aceita números do tipo int que iniciam com zero, caso seja realizado a tentativa de inserirmos um número iniciado com zero será apresentado o erro de sintaxe (SyntaxError), seja no momento da declaração de variáveis ou no momento da criação de um objeto, como proposto na atividade.

Creio que você está com a intenção de apresentar o número formatado com o zero na adiante dos números iguais ou menores que nove, como por exemplo: 07/07/2022, para realizarmos isso, podemos trabalhar com a formatação de string onde será adicionado o zero no momento do uso do método data_formatada. A criação do objeto permanecerá sem o uso do zero, como a seguir, data = Data(7, 7, 2022).

Implementando o método data_formatada, com o uso da formatação de string podemos manipular os valores do dia e mês para sejam imprimidos em um padrão determinado, para que isso seja possível os valores fornecidos no momento da criação do objeto data deverão ser do tipo int, deixo abaixo um exemplo de formatação de string:

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

No exemplo acima :02d formata um inteiro (d) para um campo de largura mínima 2 (2), com preenchimento de zero à esquerda, quando a largura mínima de dois caracteres não for atendida. Então, caso passássemos a data 7/7/2022, seria preenchido com zeros a esquerda, como mostro abaixo:


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

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


data = Data(7, 7, 2022)
data.data_formatada()

Resultado

07/07/2022

Para saber um pouco mais sobre a formatação de string recomendo a leitura do seguinte artigo que irá abordar com mais detalhes sobre as possibilidades de formatação de string:

O artigo está em inglês caso tenha dificuldades com o idioma, recomendo o uso do tradutor que existe no navegador.

Continue assim sempre usando o fórum, seja para compartilhar conhecimentos ou para tirar dúvidas.

Fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!