Bardzo popularnym zadaniem, szlifującym nasz język, jest program do analizy ciągu znaków, czyli przykładowo zliczenia liczby słów czy też znaków.

Mamy podany ciąg S. Np „Ala ma kota”. W ramach zadania możemy zostać poproszeni o jedno, lub więcej z poniższych:

1. zliczyć wyrazy. W naszym przypadku będzie ich 3

2. zliczyć litery. Będzie ich 9

3. zbadać częstotliwość występowania liter. a – 3, l – 1, m 1, k – 1, t – 1

Rozwiązanie.

Niezależnie który z powyższych punktów adresujemy, potrzebujemy pętli For, która pozwoli nam przeanalizować literę po literze. Następnie:

1 Zliczanie wyrazów.

Wyrazy rozpoznamy po tym że są oddzielone spacjami. Możemy również założyć, że zdanie nie będzie się, ani zaczynać, ani kończyć spacją, a będą one występować tylko w środku zdania. Na naszym przykładzie widzimy że są 2, Wyrazów będzie zawsze o 1 więcej niż spacji.

2. Zliczanie liter.

Literami będzie wszystko to co nie jest spacją. Tak więc 1 i 2 możemy adresować bardzo prosto. Jeżeli spacja, to mamy do czynienia ze słowem, jeżeli to nie jest spacja, to mamy do czynienia z literą.

3. Częstotliwość występowania liter.

Punkt 3 jest trudniejszy niż 1 i 2, jednak również bardzo prosty jak tylko dowiemy się o ‘hash table’, czyli tablicy z haszowaniem.

Jest to nic innego, jak słownik, który przechowuje jako klucz, daną literkę, natomiast jako wartość, ilość razy jaką się na nią natknęliśmy. O słownikach możemy poczytać więcej w lekcji o zmiennych w Python, oraz w lekcji na temat operacji na zmiennych Python.

Za każdym razem gdy mamy do czynienia z literą, sprawdzamy jej występowanie w tablicy z haszowanie. Jeżeli jej tam nie ma, to ją dodajemy, po czym stawiamy licznik 1.

hash_table [‘litera’] = 1

Jeżeli litera występuje w tablicy, to zwiększamy licznik

hash_table [‘litera’] += 1

Tablica z haszowaniem sprawia że zadanie staje się proste.

Przykładowy kod, z rozwiązaniem:

string = "ABC for the purpose of LetterCounting program"
print(string)
words = 1 
letters  0 
hash_table = {}

for char in string:
    char = char.lower()
    if char  == ' ':
        words+=1
    else:
        letters+=1
        if char in hash_table:
            hash_table[char]+=1
        else:
            hash_table[char]=1
                

print("Words:", words, "Letters:", letters, "Freq:", hash_table)

Ćwiczenia Python, dla początkujących

  1. Wstęp do kursu
  2. FizzBuzz
  3. Najmniejsza i największa liczba
  4. Zliczanie liter <– bieżąca lekcja
  5. Sortowanie bąbelkowe
  6. Suma dwóch liczb
  7. Wyszukiwanie binarne
  8. Gra w orła i reszkę
  9. Podsumowanie oraz dalsze kroki