Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Desafio da aula 3 - formatar datas

Ola pessoal, tudo bem? segue o meu exercicio resolvido

class Data:

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


    def formatada(self):
        print(f'{self.dia}/{self.mes}/{self.ano}')

Dessa forma eu consegui formatar a data utilizando a "/", porem se eu tento colocar uma data como 01/01/2019 o codigo da erro de sintaxe

hoje = Data(01, 01, 2019)
  File "<input>", line 1
    hoje = Data(01, 01, 2019)
                 ^
SyntaxError: invalid token

Poderiam me explicar o porque?

3 respostas

então, do jeito que você colocou o python está tentando concatenar os valores... ex:

print('a', 'b')
>>> ab

não esqueça das aspas para tornar a virgula uma string !

eu faria assim:

dia = 1
mes = 1
ano = 2019

print('{}, {}, {}'.format(dia, mes, ano))

ou

print('01, 01, 2019')

olá amigo, não consegui entender a resposta, mas acredito que da mesma forma daria erro, as datas colocadas ao criar o objeto que estão com problema, se eu coloco uma data que se começando com o 0, tipo 01/01/1990 elá do erro, Começando do jeito que você falou vai normal

solução

Oi, Lucas, testei seu código aqui e reparei que o meu dá o mesmo problema. No meu caso, fiz assim:

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

    def formatada(self):
        print(self.dia, self.mes, self.ano, sep="/")

Parece que o python aponta um problema de sintaxe quando inserimos valores que iniciam em zero. Pesquisando aqui, parece que, para o python, zeros no início de números simplesmente não fazem sentido. A única saída seria (1) tirar o zero, escrevendo d = Data(1, 1, 2019) ou (2) passar os valores como string, por exemplo d = Data("01", "01", "2019".

Além disso, só pela curiosidade, parece que escrever algo como 02 ou 03 significava, no python 2, escrever o número 2 em sistema octal (ou seja, de base 8). No python 3 isso foi substituído por 0o# (sendo # o número que você quer colocar em octal). Ao menos foi isso que entendi pesquisando.