Função que dado uma data digitada pelo usuário, informe há quantos dias atrás aconteceu aquela data.

710 views
Skip to first unread message

Giovanna Pires

unread,
Apr 19, 2021, 11:46:54 AM4/19/21
to Python Brasil
Hello, sou bem nova no .Py e ja procurei algumas informações sobre o "import datetime" mas não achei alguma que especifique o meu erro, alguma alma para me ajudar?! 
py.PNG

Anderson Livramento

unread,
Apr 19, 2021, 12:36:33 PM4/19/21
to python...@googlegroups.com
Olá Giovanna.

Se você está começando no Python, e na programação em si, sugiro estudar os tipos de dados, strings, arrays, etc, e a classe "Date", "Datetime" do Python, para entender como o Python trata e armazena um "tipo data", e também as operações entre esses tipos.

Dito isso, segue algumas dicas:

- A função "input" do Python retorna uma string (no caso a string que foi digitada);
- a função split, sem parâmetros, retorna um array de palavras (caracteres separados por um espaço). Por exemplo, se você digitar "duas palavras", split() vai retornar ['duas', 'palavras'], se você digitar "19/04/2021", split() vai retornar ['19/04/2021'] ;

Então "y", no seu código é um array, que você está passando como parâmetro para a sua função, que, pelo código está, esperando um tipo "Date/Datetime". E mesmo que você passe um tipo Date corretamente para a sua função, o método "strftime" retorna um tipo string, então, você está fazendo uma operação de subtração entre um Date e uma string, o que subiria uma exceção (no caso, a primeira exceção que acontece deve ser: AttributeError: 'list' object has no attribute 'strftime').

Após rever esses conceitos de tipagem de variáveis e como isso é resolvido no Python, dê uma olhada no módulo datetime, especificamente o "timedelta" [1].

E como últimas dicas:

- Evite colocar os seus códigos de exemplo aqui na lista no formato de imagem. Use um pastebin ou o gist do GitHub, para ficar mais fácil de replicar e comentar, diretamente no código, o problema;
- Ao postar a sua dúvida coloque também a mensagem do erro/exceção (Traceback).

Abraços, bem vinda ao Python e espero ter ajudado.



On Mon, 19 Apr 2021 at 12:46, Giovanna Pires <gih_pire...@outlook.com> wrote:
Hello, sou bem nova no .Py e ja procurei algumas informações sobre o "import datetime" mas não achei alguma que especifique o meu erro, alguma alma para me ajudar?! 
py.PNG

--
--
------------------------------------
Grupo Python-Brasil
https://wiki.python.org.br/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com
---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/python-brasil/3cda23d6-3388-4cbd-93eb-cc727c534bdcn%40googlegroups.com.


--
 Anderson R. Livramento
Florianopolis - Santa Catarina - Brasil

"Onde quer que você esteja, você sempre estará lá."

Carlos Max

unread,
Apr 27, 2021, 2:58:48 PM4/27/21
to python...@googlegroups.com
Giovanna Pires, taí uma versão, espero ter ajudado, segue:

from datetime import datetime, date

def data(dia_alt):
    dia_atual = date.today()
    dia_atual = dia_atual.strftime("%d/%m/%Y")
    dia_atual = datetime.strptime(dia_atual,"%d/%m/%Y")
    dia_alt = datetime.strptime(dia_alt,"%d/%m/%Y")
    qtd_dias = abs((dia_atual - dia_alt).days)
    return qtd_dias
pgt = str(input("Informe a data(dia/mes/ano): "))
acont = data(pgt)
if acont == 0:
    print(f"Aconteceu hoje!")
elif acont == 1:
    print(f"Aconteceu a {acont} dia atrás!")
else:
    print(f"Aconteceu a {acont} dias atrás!")

Em seg., 19 de abr. de 2021 às 12:46, Giovanna Pires <gih_pire...@outlook.com> escreveu:
Hello, sou bem nova no .Py e ja procurei algumas informações sobre o "import datetime" mas não achei alguma que especifique o meu erro, alguma alma para me ajudar?! 
py.PNG

--

Adriano Christi

unread,
May 2, 2021, 3:00:47 PM5/2/21
to Python Brasil
Vê se isso ajuda:

from datetime import date, datetime

data_hoje = "-".join(str(date.today( )).split("-")[::-1])

dia = input("Digite uma data (DD-MM-AAAA): ")

num_dia = datetime.strptime(dia, "%d-%m-%Y").date( ).toordinal( )
num_data = datetime.strptime(data_hoje, "%d-%m-%Y").date( ).toordinal( )
dif_datas = num_data - num_dia

print(f"Faz {dif_datas} desde o dia {dia} até hoje {data_hoje}")

Sent from my AC&MM Galaxy Tab S4

Linux - Junior Polegato

unread,
May 3, 2021, 3:48:56 AM5/3/21
to python...@googlegroups.com
Olá!

      Bastar fazer "return x.days", veja um exemplo em CLI: 

»»» import datetime
»»» hoje = datetime.date.today()
»»» nascimento = datetime.date(2006, 6, 7)
»»» dias = hoje - nascimento
»»» dias
datetime.timedelta(days=5444)
»»» dias.days
5444



-- 

[]'s

Junior Polegato


Em 02/05/2021 16:00, Adriano Christi escreveu:
Reply all
Reply to author
Forward
0 new messages