[Python][Python 3] Kalendarz gregoriański. Ile dni minęło

ari0803
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 31 paź 2014, o 13:06
Płeć: Kobieta
Podziękował: 1 raz

[Python][Python 3] Kalendarz gregoriański. Ile dni minęło

Post autor: ari0803 »

Zakładając, że od początku naszej ery obowiązywał kalendarz gregoriański (co nie jest prawdą), napisz funkcję, która wylicza ile dni minęło od początku ery, do podanej daty.
Napisz program, który obliczy ile dni minęło od daty Twoich urodzin do dnia dzisiejszego.
Przelicz to na sekundy.

Pomysł miałam taki żeby na samym początku program policzył ile było lat przestępnych do roku wcześniejszego niż podany. A potem żeby sprawdził czy ten podany rok jest przestępny i wtedy jakoś obliczył ile dni minęło w tym roku. Ale nie mam pojęcia jak to zapisać.

Aktualnie mam tyle :

Kod: Zaznacz cały

from math import floor
a=int(input("Podaj dzień "))
b=int(input("Podaj miesiąc "))
c=int(input("Podaj rok "))
d=c-1 #ilość lat do roku wcześniejszego niż podany jako c
e=floor((d/4)-(d/100)+(d/400)) #ilość lat przestępnych z d
if c%4==0 and x%100!=0 and x%400==0:
Będę wdzięczna za wszystkie porady i wskazówki co dalej z tym zrobić.
Ostatnio zmieniony 31 paź 2014, o 14:51 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
lukequaint
Użytkownik
Użytkownik
Posty: 219
Rejestracja: 5 maja 2010, o 18:27
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 1 raz
Pomógł: 75 razy

[Python][Python 3] Kalendarz gregoriański. Ile dni minęło

Post autor: lukequaint »

Wykorzystaj moduł datetime. Są tam dwie klasy: date i timedelta. Tworzysz dwa obiekty tej pierwszej i po ich odjęciu otrzymasz liczbę dni, które minęły od jednej do drugiej:

Kod: Zaznacz cały

>>> import datetime
>>> a = datetime.date(1, 1, 1)   # 1 stycznia 1 roku
>>> b = datetime.date(10, 1, 1)  # 1 stycznia 10 roku
>>> (b - a).days
3287
>>> (b - a).days * (24 * 60 * 60) # sekundy
283996800
Więcej w dokumentacji:

Kod: Zaznacz cały

https://docs.python.org/3/library/datetime.html


Moduł zakłada, że kalendarz gregoriański był cały czas i cały czas będzie - tak jak chcesz .
ODPOWIEDZ