"""Funkce Délka slova: seznamy slov podle délky v počtu písmen, průměr, medián, modus, SD, distribuce délek, vizualizace (barplot, boxplot)""" # FUNKCE def prvni_funkce(): print('Toto je funkce') print('To je vše, co dělá') prvni_funkce() jednotky = ["námořník", "policistka", "lingvista", "kartfografka", "prodavač"] delky = [] for jednotka in jednotky: delky.append(len(jednotka)) prumerna_delka = sum(delky) / len(delky) print(prumerna_delka) jednotky = ["námořník", "policistka", "lingvista", "kartfografka", "prodavač"] def prum_delka(): delky = [] for jednotka in jednotky: delky.append(len(jednotka)) prumerna_delka = sum(delky) / len(delky) print(prumerna_delka) prum_delka() jednotky = ["ský", "ek", "ař", "án", "ač"] prum_delka() jednotky = ["22243", "1298", "2", "112", "155"] prum_delka() # pripomenout, ze promenne ve funkci zustavaji jen v dane funkci, nejdou vyvolat mimo funkci def prum_delka(): delky_02 = [] for jednotka in jednotky: delky_02.append(len(jednotka)) prumerna_delka = sum(delky_02) / len(delky_02) print(prumerna_delka) prum_delka() print(delky_02) # ale naopak, promenne, ktere jsme vytvorili mimo funkci, se daji pouzit ve funkci delka_slova = 7 cislo = 2 def druha_funkce(): if delka_slova > cislo: print(f'Dané slovo má více znaků než {cislo}.') else: print(f'Dané slovo má méně znaků než {cislo}.') druha_funkce() # funce vracejici hodnoty, # ? jaky je rozdil mezi print a return:https://www.codingem.com/print-vs-return-in-python/ # Printing means displaying a value in the console. To print a value in Python, # you call the print() function. After printing a value, you can no longer use it. # Returning is used to return a value from a function and exit the function. # To return a value from a function, use the return keyword. # You can use the returned value later by storing it in a variable. # print tiskne a dal se neda pouzit # return vrati hodnotu funkce, ukonci fci, ale da se pouzit dal cisla = [8,9,11] def treti_funkce(): pricteni = [] for cislo in cisla: pricteni.append(cislo + 3) print(pricteni) treti_funkce() cisla = [8,9,11] def ctvrta_funkce(): pricteni = [] for cislo in cisla: pricteni.append(cislo + 3) return pricteni ctvrta_funkce() # ukazat, co se stane, kdyz return vyhodim # a ted srovnej nacitani_treti_funkce = treti_funkce() print(nacitani_treti_funkce) nacitani_ctvrte_funkce = ctvrta_funkce() print(nacitani_ctvrte_funkce) # argumenty ve fci def pata_funkce(a, b): return a + b print(pata_funkce(3, 7)) print(pata_funkce('dobrý ', 'den')) #! pozor na vztah promennych VNE a VEVNITR funkce x = "den" def sesta_funkce(a): a = "noc" return a # srov. rozdil printu print(x) print(sesta_funkce(x)) print(x) print(a) y = [2,3,4] def sedma_funkce(z): z = [6,7,8] return z print(y) print(sedma_funkce(y)) print(y) print(z) y = [2,3,4] def sedma_funkce(z): z.append(5) return z print(y) print(sedma_funkce(y)) print(y) print(z) # fce pro upravu textu def uprav_text(path): with open(path, encoding='utf-8') as f: obsah = f.read() text_bez_interpunkce = obsah.translate(str.maketrans({',':'', '.':'', '!':'', '?':''})) text_bez_interpunkce_lc = text_bez_interpunkce.lower() return text_bez_interpunkce_lc text_01 = uprav_text('C:\\Users\\Cech\\00_prace\\vyuka\\Brno\\PLIN057_stroj_zprac_textu\\text_01.txt') print(text_01) text_02 = uprav_text('C:\\Users\\Cech\\00_prace\\vyuka\\Brno\\PLIN057_stroj_zprac_textu\\text_02.txt') print(text_02) # UKOL: vytvorte funkci, ktera z textu vypocita prumernou delku slova (=tokenu) # pouzijete ji na text_01 a text_02 def prum_delka_slov(text): slova = text.split() delky = [] for slovo in slova: delky.append(len(slovo)) prumer = sum(delky)/len(slova) return prumer print(prum_delka_slov(text_01)) print(prum_delka_slov(text_02)) # delky slov v poctu pismen def delky_slov(text): delky_slov = [] slova = text.split() for slovo in slova: delky_slov.append(len(slovo)) return delky_slov delky_slov_01 = delky_slov(text_01) delky_slov_02 = delky_slov(text_02) # udelame slovnik, kde bude slovo a hodnota delky, def slova_delky(text): slova_a_delky = {} slova = text.split() for slovo in slova: slova_a_delky[slovo] = len(slovo) #danemu slovu priradi delku return slova_a_delky slova_delky_01 = slova_delky(text_01) print(slova_delky_01) slova_delky_02 = slova_delky(text_02) print(slova_delky_02) #usporadani slovniku podle abecedy, print(sorted(slova_delky_01.items())) # konvertujeme do slovniku print(dict(sorted(slova_delky_01.items()))) #vrati jen usporadane delky print(sorted(slova_delky_01.values(), reverse=True)) #vrati jen usporadana slova print(sorted(slova_delky_01.keys(), reverse=False)) # usporadani podle delek usporadane_delky = sorted(slova_delky_01.values(), reverse=True) slova_a_delky_usp = {} for i in usporadane_delky: for k in slova_delky_01: if slova_delky_01[k] == i: # slova_a_delky[k] jsou hodnoty; porovna zde tedy hodnoty slova_a_delky_usp[k] = slova_delky_01[k] #!!! danem slovu da jeho delku, viz nize (yy), jak to funguje print(slova_a_delky_usp) yy = {} yy['ani'] = (slova_delky_01['ani']) print(yy) #casto jde o to, zjistit z textu stredni hodnoty: prumer, median, modus + smerodatnou odchylku import statistics # pro tokeny statistics.mean(delky_slov_01) statistics.stdev(delky_slov_01) statistics.median(delky_slov_01) statistics.mode(delky_slov_01) # pro typy statistics.mean(slova_delky_01.values()) statistics.stdev(slova_delky_01.values()) statistics.median(slova_delky_01.values()) statistics.mode(slova_delky_01.values()) # import celeho modulu za pomoci aliasu, aby se to lip zapisovalo import statistics as s s.mean(slova_delky_01.values()) s.stdev(slova_delky_01.values()) s.median(slova_delky_01.values()) s.mode(slova_delky_01.values()) #UKOL: napiste funkci, pomoci niz zjistite frekvence jednotlivych delek a) pro tokeny, b) pro typy # - inspirace frekvecnim slovnikem from collections import Counter def frekvence_delek(delky): frekv_delek = Counter(delky) return frekv_delek # pro tokeny print(frekvence_delek(delky_slov_01)) #pro typy print(frekvence_delek(slova_delky_01.values()))