Pokročílí 2: Vetvenie, cykly¶
Na tomto cvičení pokračujeme v opakovaní základov Pythonu. Pripomenieme si základné dátové typy a tvorbu funkcií. Zopakujeme si tiež vetvenia, cykly a výnimky.
Literál¶
Dátové typy majú svoje konkrétne hodnoty. Zápis takejto hodnoty priamo v kóde sa nazýva literál. Syntax literálov je súčasťou programovacieho jazyka.
V Pythone každý literál vytvorí nový objekt v pamäti počítača. Výnimku tvoria malé nemenné objekty, ktoré Python môže, ak chce, vytvoriť v pamäti iba raz, a znovupoužiť ich.
Na rozdiel of Javy Python nemá primitívne dátové typy, každá hodnota je objekt. Teda aj hodnoty všetkých dátových typov sú objekty. Či už máme číslo 4 alebo zoznam [1, 2, 3], obidve sú v pamäti uložené ako objekty.
None¶
V Pythone existuje špeciálna hodnota, ktorá signalizuje, že žiadna hodnota nie je prítomná. Zapisujeme ju None. Používa sa napríklad v prípadoch, keď napr. funkcia nevracia žiadnu hodnotu.
Príkazy vs Výrazy¶
Kód v Pythone je postupnosť príkazov. Príkaz, anglicky statement, je časť kódu, väčšinou jeden riadok, ktorý vykoná nejakú akciu. Je samostatný a nemôže byť súčasťou iných príkazov. Niektoré príkazy sú zložené, čo znamená, že môžu obsahovať viacero príkazov za sebou. Príkladom je if elif else.
Príklad príkazov: =, if, while, return, break
Oproti tomu je výraz, anglicky expression, čo je časť kódu, ktorá vracia hodnotu a môže byť súčasťou iných výrazov alebo aj príkazov.
Príklad: 3 + 1, foo(),a > 5
Učím sa s pomocou umelej inteligencie
Som študent strednej školy, učím sa Python. Vysvetli mi:
Základné dátové typy¶
V Pythone máme tieto základné dátové typy:
| Kategória | Názov | Popis | Príklad literálu |
|---|---|---|---|
| Čísla | int |
celé číslo | 10, -5 |
| Čísla | float |
desatinné číslo | 3.14 |
| Text | str |
reťazec znakov | "Ahoj Fero", 'Ako sa máš' |
| Logické | bool |
pravda / nepravda | True, False |
| Sekvencie | list |
zoznam, meniteľný | [1, "Fero", False] |
| Sekvencie | tuple |
zoznam, nemenný | (1, "Fero", False) |
| Množiny | set |
množina, bez poradia, meniteľná | {1, "Fero", False} |
| Mapovanie | dict |
slovník, kľúč -> hodnota, meniteľná | {"meno": "Fero", "známka": 1} |
Funkcie¶
Funkcia v Pythone je blok kódu, ktorému priradíme nejaké meno. Tento blok kódu môže mať nejaké vstupné hodnoty, a po skončení funkcia môže vrátiť nejaký výsledok pomocou príkazu return. Funkcie používame na znovupoužitie kódu, zlepšenie prehľadnosti a modularity.
Funkciu zadefinujeme slovíčkom def. Telo samotnej funkcie musí byť odsadené štyrmi medzerami.
Nezabudnúť na dvojbodku na konci hlavičky funkcie!
Takúto funkciu potom vieme v ďalšom kóde volať.
Kedže Python interpretuje kód riadok po riadku, funkciu môžem zavolať až po tom, čo ju zadefinujem. To je rozdiel od napr. Javy, kde poradie nehrá úlohu.
Ak má funkcia parameter, pri jej volaní musím do týchto parametrov dať nejaké hodnoty, v takom pradí, v akom boli zadefinované. Ináč nastane chyba. V definícii funkcie mám ale možnosť niektorým parametrom priradiť defaultnú hodnotu, ktorá sa použije, ak pri volaní funkcie tento parameter nevyplním.
Vyššie uvedené zadávanie parametrov sa vola pozičné. Okrem neho môžem v Pythone použiť aj kľúčové zadávanie parametrov. To je také, kde uvediem názov premennej. V takom prípade nemusím dodržiavať poradie. Pozičné a kľúčové zadávanie môžem kombinovať, ale kľúčové musí ísť až po pozičnom.
Vetvenie programu¶
Základné vetvenie pomocou podmienok:
if a aj iné rozhodovacie bloky môžem ľubovoľne vnárať.
V pythone existuje aj tzv. ternárny operátor, čo je podmienka, ktorú môžeme zapísať do jedného riadku a predstavuje výraz a nie príkaz, teda môžme je použiť v rámci iného kódu.
Cykly¶
Cykly slúžia na opakovanie nejakej časti kódu. Poznáme dva hlavné fory cyklov
for cyklus sa používa sa na iterovanie cez kolekcie (zoznamy, reťazce, množiny, atď.) alebo rozsahy čísel. Používame ho keď vieme, koľko iterácií nastane alebo keď potrebujeme iterovať cez nejakú kolekciu.
while cyklus sa opakuje, kým platí podmienka (hodnota je True alebo true like). Používame ho keď dopredu nevieme, koľko krát sa cyklus má opakovať.
Python má naviac špeciálne príkazy, ktoré menia správanie cyklov. break ukončí celý cyklus a continue preskočí aktuálnu iteráciu a pokračuje ďalšou.
Niekedy potrebujeme zistiť, či náš cyklus skončil normálne, alebo bol predčasne ukončený pomocou break. V Pythone na to máme špeciálnu formu použitia príkazu else, ktorý sa vykoná, keď cyklus skončí normálne, bez breaknutia
Výnimky¶
Výnimky v Pythone sú spôsob, ako program reaguje na chyby alebo neočakávané situácie počas behu programu. Namiesto toho, aby pri chybe program hneď spadol, môžeme výnimku zachytiť a spracovať.
try:
x = int(input("Zadaj číslo: "))
y = int(input("Zadaj deliteľ: "))
print("Výsledok:", x / y)
except ValueError:
print("Zadali ste neplatné číslo!")
except ZeroDivisionError:
print("Delenie nulou nie je povolené!")
Pri výnimkách sa často používa aj príkaz finally, ktorý sa spustí vždy po ukončení try bloku, či výnimka nastala alebo nie.
try:
f = open("subor.txt", "r")
obsah = f.read()
except FileNotFoundError:
print("Súbor sa nenašiel")
finally:
print("Tento kód sa vykoná vždy")
Výnimku vieme vyvolať v kóde aj sami pomocou príkazu raise
Úlohy na precvičenie¶
Úloha 2.1: Vykreslenie štvorca do konzoly
Vytvorte funkciu, ktorá vykreslí štvorec do konzoly. Vstupom do funkcie je veľkosť štvorca.
Úloha 2.2: Výpočet obsahu a objemu valca
Vytvorte funkciu, ktorá na vstupe prijíma výšku a polomer a vypočíta obsah a objem valca. Výsledok vráťťe ako dict, a na vypísanie na obrazovku vytvorte samostatnú funkciu.
Úloha 2.3: Výpočet faktoriálu
Vytvorte funkciu na výpočet faktoriálu
Úloha 2.4: Orámovaný text
Vytvorte funkciu na vypísanie orámovaného textu do konzoly. Majte aj maximálnu šírku a text zalomte po slovách, ak je dlhý.
Úloha 2.5: Prvočísla
Vytvorte funkciu na vrátenie najbližieho prvočísla väčšieho ako zadaný vstup
Zhrnutie cvičenia¶
- Literál je zápis konkrétneho údaja priamo v kóde
- Každý literál vytvorí nový objekt v pamäti počítača
-
Noneje špeciálna hodnota, ktorá signalizuje, že žiaden údaj nie je k dispozícii - Príkaz, anglicky statement, je časť kódu, ktorý vykoná nejakú akciu.
- Príklad:
=,if,while,return,break
- Príklad:
- Výraz, anglicky expression, čo je časť kódu, ktorá vracia hodnotu a môže byť súčasťou iných výrazov alebo aj príkazov.
- Príklad:
3 + 1,foo(),a > 5
- Príklad:
- Základné dátové typy v Pythone
-
int,float,str,bool,list,tuple,set,dict
-
- Funkcia v Pythone je blok kódu, ktorému priradíme nejaké meno. Funkciu zadefinujeme slovíčkom
def- Nezabudnúť na dvojbodku na konci hlavičky funkcie!
- V definícii funkcie môžme parametrom priradiť defaultnú hodnotu
- Kľúčové zadávanie parametrov je také, kde uvediem názov premennej
- Vetvenie programu pomocou
if,elif,else-
ifa aj iné rozhodovacie bloky môžem ľubovoľne vnárať - ternárny operátor je podmienka, ktorú môžeme zapísať do jedného riadku a predstavuje výraz
-
- Cykly slúžia na opakovanie nejakej časti kódu. Poznáme dva hlavné fory cyklov
-
forcyklus sa používa sa na iterovanie cez kolekcie alebo rozsahy čísel. -
whilecyklus sa opakuje, kým platí podmienka -
breakukončí celý cyklus -
continuepreskočí aktuálnu iteráciu a pokračuje ďalšou -
elsesa vykoná, keď cyklus skončí normálne, bez breaknutia
-
- Výnimky v Pythone sú spôsob, ako program reaguje na chyby
-
try,except -
finallysa spustí vždy po ukončení try bloku, či výnimka nastala alebo nie. - výnimku vieme vyvolať v kóde aj sami pomocou príkazu
raise
-
Poznámky do zošita
V zošite je potrebné mať napísané aspoň tieto poznámky:
Literál je zápis údaja priamo v kóde
Príkaz vykoná akciu, je samostatný
Výraz vracia hodnotu a môže byť súčasťou iných výrazov a príkazov
Základné dátové typy v Pythone:
- int, float, str, bool, list, tuple, set, dict
Funkciu vytvorím pomocou def
- parametrom môžem priradiť defaultnú hodnotu
- vieme použiť aj kľúčové zadávanie parametrov
Vetvenie programu:
- if, elif, else
- ternárny operátor je if ako výraz
Cykly:
- for pre kolekcie a rozsahy
- while ak máme ukončovaciu podmienku
- break, continue, else
Výnimky v Pythone
- try, except
- finally, raise
Skúšanie a kontrola vedomostí
Ústne skúšanie alebo krátka 5-minútovka:
- Vedieť napísať funkciu
- Vedieť ošetriť výnimku
- Vedieť napísať cyklus a podmienku
- Ternárny operátor