Základy programování v jazyce Python Lekce 5 - Mutables vs. Imutables, Slovníky Mutables vs. Immutables ● Typy, jejichž hodnoty můžete měnit (Mutable): ○ seznam hodnot -- list ○ slovník (dict) ● Typy, jejichž hodnoty nezměníte leda přepíšete novými objekty (Immutable): ○ čísla (int, float,...) ○ text (str) ○ N-tice -- tuple ○ funkce Mutables se předávají jako ukazatel na místo v paměti! >>> print(kamosova_bakalarka) ['muj_lepsi_uvod', 'vysledky', 'zaver'] >>> #COZE?! Příkazy v konzoli (píšete vy) Output (píše počítač) >>> kamosova_bakalarka = ['uvod', 'vysledky', 'zaver'] >>> moje_bakalarka = kamosova_bakalarka >>> print(moje_bakalarka) ['uvod', 'vysledky', 'zaver'] >>> moje_bakalarka[0] = 'muj_lepsi_uvod' Komentář >>> print(moje_bakalarka) ['muj_lepsi_uvod', 'vysledky', 'zaver'] Tuple Tuple (N-tice) je list (seznam) který nelze měnit. moje_vzdelani = ('III. ZŠ Šumperk', 'Gymnázium Šumperk', 'Bc. @ MU Brno', 'Mgr. @ MU Brno') print(moje_vzdelani[1]) # podivat se muzu print(moje_vzdelani[1:3]) # vyber z tuplu je tuple #tuple nemůžeme změnit moje_vzdelani[2] = 'BA @ Oxford University ' #TypeError moje_vzdelani[2:4] = ('BA @ Stanford, 'MSc @ Stanford) #TypeError moje_vzdelani.append('Ph.D. @ MIT') #TypeError Slovníky Slovník je podobně jako list struktura ve které lze uchovávat věci, těm říkáme položka (angl. item). Každá položka má a . může být jakýkoliv immutable objekt. Pomocí hesla ve slovníku vyhledáváme. může být jako v případě listu cokoli. Takže slovnik[] nám pak vrátí Slovník - příklad slovnik = {} #prázdný slovník slovnik['Včera'] = 'Dnes' nebo slovnik = {'Auto': 'Trabant', 1: 'jednička', (14,'únor',2019): 'Valentýn', 3.14: 'Pí'} print(slovnik['Auto'],' je ',slovnik[1]) 'Auto' (14, 'únor', 2019) 1 3.14 Metody slovníku slovnik.clear() - smaže všechny záznamy ve slovníku slovnik.get('Auto') - podobné jako slovnik['Auto'] nicméně nevyhodí chybu pokud 'Auto' není definováno ale vrátí objekt None slovnik.items() - vrátí slovník jako seznam tuplu ve tvaru (,) slovnik.keys() - vrátí "view* " na hesla slovníku slovnik.values() - vrátí "view* " na hodnoty slovníku slovnik.pop('Auto') - vrátí hodnotu auta - 'Trabant' a vymaže záznam ze slovníku del slovnik['Auto'] - vymaže zaznam ze slovníku slovnik.update() - spojí dva slovníky dohromady * view je náhled, který se automaticky aktualizuje, změníte-li slovník Slovníky a Cykly for heslo in slovnik: print(heslo) #vrátí postupně všechny hesla print('-'*10) for heslo in slovnik.keys(): print(heslo) #taky vrátí postupně všechny hesla for hodnota in slovnik.values(): print(hodnota) #vrátí postupně všechny hodnoty #pořadí není zaručeno! print('-'*10) for par in slovnik.items(): print(par) #vrátí postupně všechny záznamy ve formě tuple - (heslo, hodnota) Cvičení Napište program, který vezme přirozené číslo a vytvoří slovník s druhými mocninami čísel po dané číslo. Příklad výsledku: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64} Cvičení Napište program, který vezme přirozené číslo a vytvoří slovník s druhými mocninami čísel po dané číslo. Příklad výsledku: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64} Řešení: n = 8 d = dict() # nebo d = {} for i in range(1,n+1): d[i] = i*i print d Cvičení A. Vypište ze slovníku jak se řekne maďarsky "tři"/"tri". B. Vytvořte česko-slovenský slovník čísel pomocí česko-maďarského a slovensko-maďarského slovníku. C. Vytvořte slovník který převádí cifry (1,2,3…) na slova v češtině nebo slovenštině. D. Vypište cifry a čísla ve všech třech jazycích vedle sebe, t.j.: 1 jeden jeden egy Cvičení Seskupte jména podle počtu písmen. Využijte k tomu slovník. Příklad výsledku: slovnik[3] = ['Dan', 'Gál', 'Ivo',...] Nápověda: funkce len vrátí délku řetězce: len('Dan') #3 Nákup se slovníkem 3.0 - zadání ve studijních materiálech