Zliczanie liter

Łatwy problem: zliczanie wystąpień pojedynczej litery

Dyskutowaliśmy już wcześniej rozwiązanie problemu zliczania liczby wystąpień określonej litery w napisie (łańcuchu). W przypadku poniższego kodu literą tą jest „a”.




(chp12_single)

Oczywiście, ten sam problem możemy rozwiązać, stosując do łańcucha metodę count.

def countA(text):

    return text.count("a")

Rozwiązanie ogólne : Zliczanie wszystkich liter

Uogólniając problem, zastanówmy się, w jaki sposób zliczyć liczbę wystąpień każdej litery w łańcuchu? Aby to osiągnąć musimy zdać sobie sprawę, że funkcja, która zwraca pojedynczą liczbę całkowitą nie nadaje się do tego celu. Tutaj musimy dysponować funkcją, która zwraca zbiór liczb, określających częstość wystąpień każdej z liter.

Chociaż jest wiele sposobów rozwiązania tak sformułowanego problemu, sugerujemy zastosować słownik, gdzie kluczami słownika będą litery, a wartością przypisaną każdemu kluczowi będzie liczba wystąpień danej litery w napisie.

A co, jeśli dana litera nie wystąpi w napisie? Wtedy nie zostanie ona umieszczona w słowniku. Zakłada się, że klucz, który nie występuje w słowniku ma liczbę zliczeń równą 0.

Przy wywołaniu funkcji countAll, zliczającej znaki w napisie, powinien być zwrócony słownik taki słownik. Na przykład wynikiem wywołania:

print(countAll("banana"))

powinien być słownik:

{"a":3, "b":1, "n":2}

Zacznijmy następująco konstruować odpowiednią funkcję:

  1. Zdefiniować funkcję jednoargumentową, której argumentem jest napis.
  2. Utworzyć pusty słownik zawierający zliczenia.
  3. Iteracyjnie zliczać kolejne znaki w napisie, po jednym w każdym wywołaniu pętli.
Następna część - Histogram liczności liter