class Ctecka: def precti_slovo(self): pass class Slovnik: def zapocitej_slovo(self, slovo): pass def vrat_nejcastejsi_slova(self, pocet): pass class Tiskarna: def vytiskni_seznam(self, seznam): pass ###################################################### KONEC = "konec" class CteckaPoRadkach: def precti_slovo(self): return input("Zadej slovo:") class CteckaZeStringu: def __init__(self, string): self.zbytek = string.split() def precti_slovo(self): if self.zbytek == []: return KONEC return self.zbytek.pop(0) class CteckaSeZbytkem: def __init__(self): self.zbytek = [] def precti_slovo(self): while self.zbytek == []: self.zbytek = input().split() return self.zbytek.pop(0) def precti_cislo(self): return int(self.precti_slovo()) class CteckaZeSouboru: def __init__(self, jmeno): self.soubor = open(jmeno, 'r', encoding="utf-8") self.zbytek = [] def precti_slovo(self): while self.zbytek == []: radka = self.soubor.readline() if radka == "": # eof! self.soubor.close() print("Zaviram soubor") return KONEC self.zbytek = radka.split() return self.zbytek.pop(0) class CteckaNeVelka: def __init__(self, ctecka): self.ctecka = ctecka def precti_slovo(self): slovo = self.ctecka.precti_slovo() while (slovo != KONEC) and (slovo == slovo.upper()): slovo = self.ctecka.precti_slovo() return slovo class CteckaVelka: def __init__(self, ctecka): self.ctecka = ctecka def precti_slovo(self): slovo = self.ctecka.precti_slovo() while (slovo != KONEC) and (slovo != slovo.upper()): slovo = self.ctecka.precti_slovo() return slovo class CteckaMinDelka: def __init__(self, ctecka, mindelka): self.ctecka = ctecka self.mindelka = mindelka def precti_slovo(self): slovo = self.ctecka.precti_slovo() while (slovo != KONEC) and (len(slovo) < self.mindelka): slovo = self.ctecka.precti_slovo() return slovo #----------------------------------------------------- class SlovnikVDictionary: def __init__(self): self.seznam = dict() def zapocitej_slovo(self, slovo): if slovo not in self.seznam: self.seznam[slovo] = 0 self.seznam[slovo] += 1 def vrat_nejcastejsi_slova(self, pocet): vystup = [] for i in range(pocet): nej_slovo = None nej_pocet = 0 for slovo in self.seznam: if self.seznam[slovo] > nej_pocet: nej_slovo = slovo nej_pocet = self.seznam[slovo] if nej_pocet > 0: vystup.append((nej_slovo, nej_pocet)) self.seznam[nej_slovo] = -self.seznam[nej_slovo] # ...zase obnovit... return vystup #----------------------------------------------------- class TiskarnaNaKonzoli: def __init__(self): pass def vytiskni_polozku(self, slovo, pocet): print( f"{pocet:5d} {slovo}") def vytiskni_seznam(self,seznam): print( "---------------------" ) print( "pocet slovo" ) print( "---------------------" ) for polozka in seznam: self.vytiskni_polozku(polozka[0], polozka[1]) print( "---------------------" ) import webbrowser from datetime import datetime class TiskarnaDoHTML: def __init__(self): pass def vytiskni_polozku(self, slovo, pocet): self.file.write(f"