Klasyk maturalny! Naucz się wczytywać pliki, analizować stringi, pisać algorytmy na palindromy i anagramy oraz sprawnie korzystać ze słowników.
Praktycznie każde zadanie z programowania na maturze zaczyna się od pliku .txt. Jeśli potkniesz się na tym etapie, tracisz punkty za całe zadanie, bo Twój algorytm nie będzie miał na czym pracować.
💡 Pro-tip: Magia "with open"
W Pythonie zawsze używaj konstrukcji with open(). Dlaczego? Ponieważ automatycznie dba ona o zamknięcie pliku z pamięci, nawet jeśli Twój program nagle wybuchnie i wyrzuci błąd.
Większość arkuszy CKE podaje pliki w formacie "jedno słowo na jedną linię". Najszybszy sposób, by wrzucić je do wygodnej listy i odciąć niewidoczne znaki nowej linii (\n), to użycie prostej kombinacji .read().split().
# Szybkie wczytanie wszystkich słów z pliku do listy
with open("dane.txt", "r") as plik:
slowa = plik.read().split()
# Zawsze wypisz pierwsze 5 słów na brudno, żeby sprawdzić, czy działa!
print(slowa[:5])CKE absolutnie uwielbia algorytmy tekstowe. Na szczęście Python został stworzony do pracy na napisach (Stringach) i posiada potężne mechanizmy wbudowane, które pozwalają zaoszczędzić dziesiątki linijek kodu.
Słowo czytane od przodu i od tyłu brzmi tak samo (np. KAJAK, POTOP).
Zamiast pisać skomplikowane pętle for i porównywać indeksy z dwóch stron, w Pythonie używamy magii slicingu z krokiem -1, który błyskawicznie odwraca słowo!
if slowo == slowo[::-1]:
Dwa słowa zbudowane dokładnie z tych samych liter, ale w innej kolejności (np. BAR i RAB).
Jak najszybciej to udowodnić? Wystarczy posortować oba słowa alfabetycznie! Jeśli były anagramami, po posortowaniu staną się identyczne.
if sorted(slowo1) == sorted(slowo2):
Często pada polecenie: "Podaj, która litera alfabetu występuje najczęściej we wszystkich słowach w pliku".
Jasne, możesz użyć metody .count() w pętli dla alfabetu, ale o wiele szybszym, bardziej elastycznym i wyżej punktowanym sposobem za elegancję są słowniki (dictionary). Zbierają one klucze (litery) i przypisują im dynamicznie wartości (ilość wystąpień).
wystapienia = {}
for litera in "INFORMATYKA":
# get(litera, 0) szuka litery. Jeśli jej nie ma, zwraca bezpieczne 0
# Następnie zawsze dodajemy 1.
wystapienia[litera] = wystapienia.get(litera, 0) + 1
print(wystapienia)
# Wynik: {'I': 1, 'N': 1, 'F': 1, 'O': 1, 'R': 1, 'M': 1, 'A': 2, 'T': 1, 'Y': 1, 'K': 1}To absolutny klasyk z kategorii "zadanie za 4 punkty". Musisz przeanalizować długi napis i znaleźć w nim najdłuższy fragment, który spełnia pewną regułę (np. składa się z rosnących wartości, z samych samogłosek, albo z tych samych znaków z rzędu).
Zbadaj ciąg znaków "AABBBCCCDDDDDDDE" i znajdź długość najdłuższego spójnego podciągu składającego się wyłącznie z takich samych liter występujących jedna po drugiej.
To tylko jeden z pewniaków. Na kursie przechodzimy przez nie wszystkie, krok po kroku, aż poczujesz ten spokój.
Pomóżcie mi zdać maturę!