Dict

12th Aug 2026

Word Count: počítanie slov

Čo sa naučíte

V cvičení Word Count vytvoríte funkciu, ktorá spočíta výskyty jednotlivých slov v texte a výsledok vráti ako slovník.

Pri riešení sa naučíte:

  • použiť slovník ako počítadlo, teda uložiť slovo ako kľúč a počet jeho výskytov ako hodnotu,
  • vytvárať novú položku v slovníku a zvyšovať hodnotu existujúcej položky,
  • prechádzať text pomocou cyklu a rozdeliť ho na jednotlivé slová,
  • normalizovať text tak, aby sa napríklad You, you a YOU počítali ako jedno slovo,
  • rozlišovať oddeľovače slov od apostrofu, ktorý patrí do kontrakcií ako they're alebo it's,
  • pracovať s číslami zapísanými ako text, napríklad 100,
  • navrhnúť riešenie pre rôzne druhy interpunkcie a bielych znakov,
  • čítať zadanie a testy ako presnú špecifikáciu správania funkcie.

Výsledkom nie je vypísaný text. Funkcia musí vrátiť slovník, napríklad:

word_count("Hello, hello!")
# {"hello": 2}

Čo si preštudovať

Pred riešením si preštudujte najmä tieto témy:

Užitočné kapitoly v oficiálnom Python manuáli:

Slovník ako počítadlo

Pri počítaní opakujúcich sa hodnôt potrebujete pre každé slovo vykonať jednu z dvoch operácií:

  1. Ak sa slovo v slovníku ešte nenachádza, vložíte ho s počtom 1.
  2. Ak sa už nachádza, jeho počet zvýšite o 1.

Napríklad pri spracovaní slov "red red blue" má slovník postupne obsahovať:

{}
{"red": 1}
{"red": 2}
{"red": 2, "blue": 1}

Na tento účel môžete použiť podmienku:

if word in counts:
    counts[word] += 1
else:
    counts[word] = 1

Kratšie riešenie využíva get():

counts[word] = counts.get(word, 0) + 1

Ako rozdeliť text na slová

Jednoduché text.split() rozdelí text podľa bielych znakov, napríklad medzery, tabulátora a nového riadka. Samo však neodstráni interpunkciu, takže z textu "Hello, hello!" by mohli vzniknúť hodnoty "Hello," a "hello!". Takéto slová by sa potom nespočítali spolu.

Podľa zadania:

  • slová oddeľuje ľubovoľná interpunkcia alebo biely znak,
  • apostrof vnútri slova sa neodstraňuje, takže they're je jedno slovo,
  • čísla sú tiež slová,
  • veľké a malé písmená nerozlišujeme,
  • poradie položiek vo výslednom slovníku nie je dôležité.

Preto si pred programovaním ujasnite, aký vzor označuje platné slovo. V tomto zadaní môže slovo obsahovať písmená, číslice a apostrof. Apostrof sa má zachovať iba ako súčasť slova, nie ako samostatný znak medzi oddeľovačmi. Regulárny výraz r"[a-z0-9]+(?:'[a-z0-9]+)?" je jedna z možností, ako takéto slová nájsť v ASCII texte.

Ak regulárne výrazy ešte nepoznáte, môžete začať jednoduchším riešením pomocou split() a odstránenia okrajovej interpunkcie. Pred odovzdaním však overte najmä kontrakcie a interpunkciu umiestnenú na ich okrajoch, napríklad 'PASSWORD' alebo "word!".

Postup riešenia

  1. Definujte funkciu s parametrom obsahujúcim celý subtitle, napríklad word_count(phrase).
  2. Vytvorte prázdny slovník counts.
  3. Z textu získajte jednotlivé slová podľa pravidiel zadania.
  4. Každé slovo preveďte na malé písmená.
  5. Aktualizujte jeho počet v slovníku.
  6. Po spracovaní všetkých slov vráťte counts pomocou return.

Funkcia nemá používať print. Automatické testy kontrolujú hodnotu, ktorú funkcia vráti.

Príklady, ktoré otestujte

Pred odovzdaním si skúste vysvetliť výsledok týchto vstupov:

word_count("one two one")
# {"one": 2, "two": 1}

word_count("You you YOU")
# {"you": 3}

word_count("it's they're")
# {"it's": 1, "they're": 1}

word_count("That's the password: 'PASSWORD 123'!")
# {"that's": 1, "the": 1, "password": 2, "123": 1}

Zvlášť otestujte prázdny reťazec, viac medzier, tabulátor, nový riadok, slová obklopené interpunkciou a opakované čísla.

Ďalšie úlohy na precvičenie

Previous Post Next Post

Dict