Tieto poznámky sú sprievodcom témou Maturitná príprava. Obsahujú ťahák najdôležitejších príkazov Pythonu na jednom mieste, programátorské vzory, ktoré sa v úlohách opakujú stále dokola, a riešené úlohy v štýle praktickej časti maturity. Podrobný výklad každej oblasti nájdeš v poznámkach k jednotlivým témam (Reťazce, Zoznamy, Cykly, Výnimky, Grafika v tkinteri…).
Čo nájdeš v tejto téme
| Lekcia | Čo precvičuje | Poznámky na zopakovanie |
|---|---|---|
| Reťazce | indexy, rezy, metódy, prechádzanie textu, šifry | Reťazce, Cykly |
| Zoznamy | náhodné zoznamy, hľadanie, triedenie, štatistika | Zoznamy, Algoritmy, Množiny |
| Cyklus while | opakovanie s podmienkou, postupnosti, prevody | Cykly, Operátory |
| Mix úloh | kombinácia všetkého, rozklad na funkcie | Funkcie, Modulárny program, Algoritmické úlohy |
| Grafika v tkinteri | kreslenie, udalosti, animácia, ovládacie prvky | Grafika v tkinteri |
| Výnimky | bezpečný vstup, ošetrenie chýb | Výnimky, Práca so súbormi |
1Ako riešiť praktickú úlohu
- Prečítaj zadanie dvakrát a podčiarkni: čo je na vstupe, čo má byť na výstupe a v akom presnom tvare.
- Vyskúšaj príklad ručne – na papieri, s malými číslami.
- Rozdeľ úlohu na časti (načítanie – výpočet – výpis) a každú zapíš ako funkciu.
- Programuj po kúskoch a priebežne spúšťaj. Pomocné výpisy na konci odstráň.
- Otestuj hraničné prípady: prázdny vstup, jeden prvok, nula, záporné čísla, rovnaké hodnoty.
- Skontroluj tvar výstupu – medzery, veľké a malé písmená, počet desatinných miest.
1.1Ako sa úlohy na Mente kontrolujú
- Testy porovnávajú iba výstup príkazu
print– výzvy vinput("…")sa pri testoch nevypisujú. - Ak zadanie predpisuje funkcie (napr.
vygeneruj(),spracuj(zoznam)), testy ich volajú priamo. Hlavný program (načítanie a výpis) vtedy patrí podif __name__ == "__main__":, aby sa pri testovaní funkcií nespúšťal. - Pri náhodných úlohách sa generovanie a spracovanie oddeľujú do rôznych funkcií: spracovanie sa dá otestovať s pevnými údajmi a pri generátore sa kontrolujú vlastnosti (počet, rozsah, rôznosť), nie konkrétne čísla.
2Ťahák: Python v kocke
2.1Vstup, výstup, typy
| Zápis | Význam |
|---|---|
x = input("Výzva: ") | načíta riadok ako reťazec |
n = int(input()), x = float(input()) | načíta celé / desatinné číslo |
a, b = map(int, input().split()) | dve celé čísla na jednom riadku |
cisla = [int(c) for c in input().split()] | zoznam čísel z jedného riadku |
print(a, b, sep=", ", end="") | výpis s oddeľovačom, bez nového riadku |
print(f"{x:.2f} {meno:<10} {n:>5}") | 2 desatinné miesta, zarovnanie doľava a doprava |
int("42"), str(42), float("2.5"), round(x, 2) | prevody a zaokrúhlenie |
2.2Operátory
| Operátor | Význam | Príklad |
|---|---|---|
/, //, %, ** | delenie, celočíselné delenie, zvyšok, mocnina | 17 // 5 je 3, 17 % 5 je 2 |
==, !=, <, <=, >, >= | porovnania | 1 <= x <= 10 |
and, or, not | logické spojky | x % 2 == 0 and x > 0 |
in, not in | výskyt v reťazci, zozname, množine, kľúčoch slovníka | "a" in slovo |
+=, -=, *= … | skrátené priradenie | sucet += x |
2.3Riadenie behu programu
2.4Reťazce
| Zápis | Význam |
|---|---|
s[0], s[-1], s[2:5], s[::-1] | prvý, posledný znak, rez, obrátený text |
len(s), s.count("a"), s.find("x") | dĺžka, počet výskytov, index (alebo −1) |
s.upper(), s.lower(), s.strip(), s.replace(a, b) | nový upravený reťazec |
s.split(), s.split(";"), " ".join(zoznam) | rozdelenie na zoznam, spojenie |
s.isdigit(), s.isalpha(), s.isupper() | testy znakov |
ord("a"), chr(97) | kód znaku a znak z kódu |
2.5Zoznamy, n-tice, množiny, slovníky
| Zápis | Význam |
|---|---|
z.append(x), z.insert(i, x), z.pop(), z.remove(x) | pridanie, vloženie, odobratie |
z.sort(), sorted(z, reverse=True), z.reverse() | triedenie (na mieste / nový zoznam) |
len(z), sum(z), min(z), max(z), z.count(x), z.index(x) | základné funkcie |
[x * 2 for x in z if x > 0] | generátorový zápis |
a, b = b, a | výmena hodnôt (n-tica) |
set(z), a & b, a | b, a - b | množina, prienik, zjednotenie, rozdiel |
d[k] = v, d.get(k, 0), k in d, d.items() | slovník: zápis, bezpečné čítanie, prechádzanie |
2.6Súbory, výnimky, moduly
3Programátorské vzory
Väčšina úloh sa skladá z niekoľkých stále rovnakých „stavebných kameňov“. Keď ich poznáš, riešenie skladáš ako stavebnicu.
3.1Načítavanie, kým nepríde ukončovacia hodnota
Výstup:
12 7 30 -1 [12, 7, 30]
3.2Počítadlo, súčet a priemer s podmienkou
Výstup:
počet kladných: 4
súčet kladných: 42
priemer kladných: 10.53.3Maximum a jeho pozícia
Výstup:
47 na pozíciách [1, 3]3.4Existuje? Platí pre všetky?
Výstup:
existuje nepárne: True
všetky kladné: True
existuje väčšie ako 40: True3.5Frekvencia výskytov
Výstup:
{3: 3, 1: 2, 2: 1}
najčastejšie: 3 3 krát3.6Bez opakovania, v pôvodnom poradí
Výstup:
[5, 3, 1, 8]3.7Bezpečné načítanie čísla
Výstup:
Zadaj celé číslo: dva To nie je celé číslo. Zadaj celé číslo: 7 Mám 7
3.8Náhodný zoznam
Výstup:
[20, 9, 12, 17, 1, 15, 8, 2, 6, 4, 12, 16]
párne: [20, 12, 8, 2, 6, 4, 12, 16]
zoradený bez opakovania: [1, 2, 4, 6, 8, 9, 12, 15, 16, 17, 20]3.9Skladanie nového textu
Výstup:
MAtUrItA z InfOrmAtIkY ####4Riešené úlohy
4.1Kontrola čísla ISBN-10
Zadanie: Kniha má 10-miestne číslo ISBN. Je platné, ak súčet cifier vynásobených váhami 10, 9, 8, …, 1 je deliteľný 11. Posledný znak môže byť aj X, ktorý znamená 10. Napíš funkciu je_platne_isbn(isbn); pomlčky v zápise ignoruj.
Postup: odstránime pomlčky, overíme dĺžku a znaky, potom v cykle sčítame súčiny cifier a váh. Váha prvej cifry je 10, posledná má váhu 1 – teda 10 - i pre index i.
Výstup:
80-7178-506-0 False
0-306-40615-2 True
0-306-40615-3 False
123456789X True
12345 FalseHraničné prípady v testoch: zlá dĺžka, X na zlom mieste, iný znak ako číslica.
4.2Štatistika hodov kockou
Zadanie: Program sa opýta na počet hodov, „hodí“ kockou a vypíše, koľkokrát padla každá strana (aj ako riadok hviezdičiek), ktorá strana padla najčastejšie a priemer hodov. Rozdeľ program na funkcie hody(n), pocty(zoznam) a hlavný program.
Výstup:
Počet hodov: 30 1: ****** 6 2: *** 3 3: ****** 6 4: **** 4 5: ****** 6 6: ***** 5 najčastejšie: 1 priemer: 3.53
{strana: 0 for strana in range(1, 7)} je generátorový zápis slovníka – vytvorí slovník so všetkými stranami a počtom 0. Funkciu pocty možno otestovať aj bez náhody: pocty([1, 1, 6]) musí dať 2 pre stranu 1 a 1 pre stranu 6. Ak padlo viac strán rovnako často (tu strany 1, 3 a 5), max vráti tú, ktorá je v slovníku prvá.
4.3Teploty zo súboru
Zadanie: V súbore je na každom riadku dátum a teplota oddelené bodkočiarkou. Niektoré riadky sú poškodené. Vypíš priemernú teplotu, najteplejší deň a počet dní nad priemerom; poškodené riadky preskoč a vypíš ich čísla.
Súbor teploty.txt:
1.10.;12.5 2.10.;14.0 3.10.;chyba 4.10.;9.5 5.10.;17.0 6.10.;15.5
Výstup:
priemer: 13.70 °C
najteplejšie: 5.10. (17.0 °C)
dní nad priemerom: 3
poškodené riadky: [3, 5]Jeden blok try pokryje obe chyby: riadok bez bodkočiarky (split vráti iný počet častí a rozbalenie zlyhá s ValueError) aj text namiesto čísla (float vyvolá ValueError). Prázdny riadok (riadok 5) je tiež poškodený.
4.4Grafika: graf teplôt
Zadanie: Údaje z predchádzajúcej úlohy zobraz ako stĺpcový graf v tkinteri: výška stĺpca zodpovedá teplote (10 pixelov na stupeň), pod stĺpcom je dátum.
Okno programu:
Os y plátna smeruje nadol, preto vrch stĺpca je zaklad - vyska.
5Kontrolný zoznam pred odovzdaním
- Robí program to, čo chce zadanie – nie viac, nie menej?
- Zodpovedá výstup presne požadovanému tvaru (texty, medzery, desatinné miesta)?
- Funguje program aj pre hraničné vstupy (prázdny, jeden prvok, nula, záporné, rovnaké hodnoty)?
- Sú čísla zo vstupu prevedené na
intčifloat? - Majú funkcie, ktoré zadanie predpisuje, presne požadované meno a parametre a vracajú výsledok cez
return? - Je hlavný program pod
if __name__ == "__main__":(ak úloha testuje funkcie)? - Sú odstránené pomocné výpisy?
- Je program čitateľný – výstižné mená premenných, komentáre pri zložitejších miestach?
Úlohy na precvičenie
- Napíš funkciu, ktorá overí platnosť čísla ISBN-13 (váhy sa striedajú 1 a 3, súčet musí byť deliteľný 10).
- Vygeneruj 20 náhodných čísel od 1 do 50 a vypíš tie, ktoré sú väčšie ako priemer, zoradené zostupne.
- Načítavaj slová, kým sa nezadá prázdny riadok; vypíš najdlhšie slovo a počet slov začínajúcich samohláskou.
- Zo súboru s riadkami
meno;bodyvypíš poradie podľa bodov a mená s rovnakým počtom bodov zoraď abecedne. - Nakresli v tkinteri graf výsledkov z úlohy 4 – vodorovné stĺpce s menami vľavo.
- Prejdi lekcie témy Maturitná príprava na Mente a pri každej úlohe si najprv napíš plán podľa postupu vyššie.