Dni między datami (moduł datetime)
Treść zadania
Wczytaj dwie daty i za pomocą modułu datetime z biblioteki standardowej Pythona oblicz:
- liczbę dni między tymi datami — jako wartość bezwzględną różnicy, więc kolejność dat nie ma znaczenia,
- nazwę dnia tygodnia pierwszej daty.
Dane wejściowe
6 liczb całkowitych, każda w osobnej linii:
d1— dzień pierwszej datym1— miesiąc pierwszej datyy1— rok pierwszej datyd2— dzień drugiej datym2— miesiąc drugiej datyy2— rok drugiej daty
Dane wyjściowe
Dwie linie:
- liczba dni między datami (liczba całkowita, $\ge 0$),
- nazwa dnia tygodnia pierwszej daty — dokładnie jedna z:
Poniedziałek,Wtorek,Środa,Czwartek,Piątek,Sobota,Niedziela.
Ograniczenia
- Obie daty są poprawne (nie musisz ich sprawdzać).
- $1 \le y1, y2 \le 9999$
Uwagi
- Moduł
datetimeudostępnia typdate, który reprezentuje jedną datę. Tworząc ją, podaj kolejno rok, miesiąc, dzień:
```python
from datetime import date
pierwsza = date(2020, 10, 9)
druga = date(2021, 1, 1)
print((druga - pierwsza).days) # 84
print((pierwsza - druga).days) # -84
print(pierwsza.weekday()) # 4` - Różnica dwóch dat to odcinek czasu (
timedelta); liczbę dni odczytasz z jego pola.days. Może być ujemna, więc użyjabs(...). - Metoda
weekday()zwraca 0 dla poniedziałku, 1 dla wtorku, …, 6 dla niedzieli — to inna numeracja niżhw kongruencji Zellera z ZAD-08 (tam 0 oznacza sobotę). - Moduł sam uwzględnia lata przestępne. Porównaj go z ZAD-07 i ZAD-08:
(data - date(rok, 1, 1)).days + 1to numer dnia w roku, aweekday()zastępuje wzór Zellera — dobry sposób na sprawdzenie swoich wcześniejszych rozwiązań.
Przykład
9 10 2020 1 1 2021
84 Piątek
Od 9 października 2020 do 1 stycznia 2021 mijają 84 dni: 22 do końca października, 30 w listopadzie, 31 w grudniu i 1 w styczniu.
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 3
Zadania w tym rozdziale dotyczą walidacji i obliczeń na datach w kalendarzu gregoriańskim.
Konwencje wspólne:
- Każde zadanie to osobny program: czyta standardowe wejście i wypisuje wynik na standardowe wyjście.
- Liczby wczytuj z osobnych linii, w kolejności z opisu. Data jest zawsze podawana jako trzy liczby: dzień, miesiąc, rok.
- Komunikaty wypisuj dokładnie jak w treści (kropki, polskie znaki, wielkość liter, spacje).
- Jeśli zadanie mówi „nie wypisuj nic” — program kończy się bez żadnego wyjścia.
- Program nie wypisuje komunikatów typu „Podaj liczbę:”. Tekst podany w
input("…")jest ignorowany przez sprawdzarkę. - We wszystkich zadaniach obowiązuje kalendarz gregoriański (także dla lat sprzed 1582 roku). Rok jest przestępny, gdy jest podzielny przez 4 i nie jest podzielny przez 100, albo gdy jest podzielny przez 400 (np. 2024 i 2000 są przestępne, a 2023 i 1900 — nie). Luty ma w roku przestępnym 29 dni, a w nieprzestępnym 28.
Zadanie pochodzi z otwartego zbioru Nauka-Programowania (z rozwiązaniami wzorcowymi). Zgłoś błąd w treści lub testach.
Przywrócono Twój zapisany kod.
Python uruchomi się w przeglądarce przy pierwszym teście.
Kod zapisuje się automatycznie w tej przeglądarce. Tab wstawia wcięcie; aby opuścić edytor klawiaturą, naciśnij Esc, a potem Tab.
Testy
Program dostaje „Wejście” przez input() i musi wypisać „Oczekiwane wyjście”. Liczby porównywane są z tolerancją 0,01, a tekst podany w input("…") nie jest sprawdzany.
Test 1
Nie uruchomiono1 1 2000 1 1 2000
0 Sobota
Test 2
Nie uruchomiono28 2 2024 1 3 2024
2 Środa
Test 3
Nie uruchomiono28 2 2023 1 3 2023
1 Wtorek
Test 4
Nie uruchomiono1 1 2001 1 1 2000
366 Poniedziałek
Test 5
Nie uruchomiono1 1 1900 1 1 2000
36524 Poniedziałek
Test 6
Nie uruchomiono25 12 2025 1 1 2026
7 Czwartek
Test 7
Nie uruchomiono4 10 2026 31 12 2026
88 Niedziela
Test 8
Nie uruchomiono1 1 1 31 12 9999
3652058 Poniedziałek