Zamiana formatu dat
Treść zadania
Wczytaj tekst i zamień w nim każdą datę zapisaną w formacie DD.MM.RRRR na format RRRR-MM-DD, np. 05.03.2024 → 2024-03-05. Resztę tekstu pozostaw bez zmian.
Data to dokładnie: 2 cyfry, kropka, 2 cyfry, kropka, 4 cyfry (cyfry 0–9). Data nie może być częścią dłuższego słowa — tuż przed nią i tuż po niej nie może stać litera, cyfra ani _ (zob. \b w konwencjach rozdziału). Nie sprawdzaj, czy taki dzień istnieje: 31.02.2023 też zamieniamy.
Nie są więc datami np. 1.02.2024 (jednocyfrowy dzień), 01.02.20245 (pięciocyfrowy rok) ani x01.02.2024 (data przyklejona do litery).
Dane wejściowe
- 1. linia: tekst
Dane wyjściowe
Jedna linia: tekst po zamianie (bez zmian, jeśli nie zawiera żadnej daty).
Uwagi
- Fragmenty wzorca ujęte w nawiasy
( )to grupy — są numerowane od 1 w kolejności nawiasów otwierających. W napisie zastępczymre.sub()odwołujesz się do nich przez\1,\2… albo\g<1>,\g<2>…:
re.sub(r"(\w+) (\w+)", r"\2 \1", "Ala Kowalska") # 'Kowalska Ala'
- Postać
\g<1>przydaje się, gdy zaraz po odwołaniu stoi cyfra:\g<1>0to grupa 1 i znak0, a\10oznaczałoby grupę 10.
Przykład
Spotkanie przeniesiono z 05.03.2024 na 12.03.2024.
Spotkanie przeniesiono z 2024-03-05 na 2024-03-12.
Potrzebujesz teorii?
Zasady obowiązujące w rozdziale 23
Poniższe zadania polegają na wczytywaniu danych ze standardowego wejścia (stdin) i wypisywaniu wyniku na standardowe wyjście (stdout). Rozwiązuj je za pomocą wyrażeń regularnych (moduł re).
Każde zadanie jest osobnym, niezależnym programem.
Konwencje wspólne:
- Każda wartość wejściowa znajduje się w osobnej linii — wczytuj je dokładnie w podanej kolejności.
- Tekst wielowierszowy jest poprzedzony linią z liczbą jego wierszy
n— wczytaj go, wywołującinput()nrazy. - Dla wartości logicznych wypisuj dokładnie
PrawdalubFałsz. - Wielkość liter ma znaczenie, chyba że zadanie mówi inaczej.
- Słowo to najdłuższy ciąg znaków dopasowywanych przez
\w, czyli liter (także polskich), cyfr i znaku podkreślenia_. Każdy inny znak — spacja, interpunkcja, myślnik — rozdziela słowa, np.biało-czerwonato dwa słowa:białoiczerwona. Granicę słowa w wyrażeniu regularnym oznacza\b. - Program nie wypisuje komunikatów typu „Podaj tekst:”. Tekst podany w
input("…")jest ignorowany przez sprawdzarkę.
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 uruchomionoUrodziłem się 01.01.2000 r.
Urodziłem się 2000-01-01 r.
Test 2
Nie uruchomionoDzisiaj nic się nie dzieje.
Dzisiaj nic się nie dzieje.
Test 3
Nie uruchomionoWersja 1.2.2024, telefon 123.45.67890, termin 7.03.2024
Wersja 1.2.2024, telefon 123.45.67890, termin 7.03.2024
Test 4
Nie uruchomionokod ABC12.12.2024 oraz 12.12.2024x i (24.12.2024)
kod ABC12.12.2024 oraz 12.12.2024x i (2024-12-24)
Test 5
Nie uruchomiono31.02.2023 i 99.99.9999
2023-02-31 i 9999-99-99
Test 6
Nie uruchomiono01.02.20245 to nie data, ale 01.02.2024 tak
01.02.20245 to nie data, ale 2024-02-01 tak
Test 7
Nie uruchomiono05.03.2024-06.03.2024
2024-03-05-2024-03-06
Test 8
Nie uruchomionoTermin_01.02.2024 minął
Termin_01.02.2024 minął