Úvod do Pythonu #
Čo je Python? #
Python je dynamický, interpretovaný programovací jazyk, ktorý je známy pre svoju čitateľnosť a flexibilitu. Je vhodný pre rôzne účely, od webového vývoja po vedecké výpočty, kreatívne programovanie a aplikácie v umení.
Príprava vášho programovacieho prostredia #
Python #
- Navštívte oficiálnu stránku Pythonu: https://www.python.org/downloads/
- Stiahnite si najnovšiu verziu Pythonu pre váš operačný systém.
- Spustite inštalačný program a postupujte podľa pokynov.
Editor #
Prvé kroky #
- Otvorte terminál alebo príkazový riadok.
- Napíšte ‘python’ alebo ‘python3’, aby ste spustili interaktívny režim.
- Skúste napísať jednoduchý príkaz, napríklad: ‘print(“Ahoj svet!”)’.
Základné koncepty #
- Premenné: ‘meno = “Peter”’
- Dátové typy: ‘cislo = 10’
- Riadiace štruktúry: ‘if’, ‘for’, ‘while’
- Funkcie: ‘def pozdrav():’
Príklady kódu #
# Výpis na obrazovku
print("Ahoj svet!")
# Premenné
meno = "Peter"
vek = 30
# Podmienkové vetvenie
if vek > 18:
print(meno + " je dospelý.")
else:
print(meno + " nie je dospelý.")
# Cykly
for i in range(5):
print("Číslo " + str(i))
# Funkcia
def pozdrav(meno):
return "Ahoj " + meno + "!"
print(pozdrav("Anna"))
Variables / premenné #
Variables / premenné #
Čo Sú Premenné? #
- Premenné sú symboly, ktoré slúžia ako kontajnery na uchovávanie dátových hodnôt.
- V Pythoni sú premenné dynamicky typované, čo znamená, že ich typ sa určuje automaticky počas behu programu.
- Nemusíte deklarovať typ premennej ako v iných jazykoch.
Deklarácia Premennej #
- Premennú vytvoríte jednoduchým priradením hodnoty.
x = 5
meno = "Anna"
Typy Premenných #
- Premenné môžu držať rôzne typy hodnôt, ako sú:
- Celé čísla (int)
- Desatinné čísla (float)
- Reťazce (str)
- Zoznamy (list)
- Slovníky (dict)
- Boolovské hodnoty (bool)
Premenné a Ich Typy #
- Python umožňuje zistiť typ premennej pomocou funkcie `type()`.
typ_x = type(x)
typ_meno = type(meno)
Zmena Typu Premennej #
- Premenné môžete explicitne pretypovať na iný dátový typ pomocou funkcií ako `int()`, `str()`, `float()`, atď.
cislo = "8.0" # float
cislo = int(cislo) # teraz je 'cislo' typu int
Lokálne a Globálne Premenné #
- Lokálne premenné: Sú definované vo funkcii a dostupné len v rámci tejto funkcie.
- Globálne premenné: Sú definované mimo akýchkoľvek funkcií a sú dostupné v celom kóde.
Lokálne premenné #
- Definované vo funkcii
- Prístupné iba v rámci tejto funkcie
- Neviditeľné pre zvyšok programu
def funkcia():
lokalna_premenna = "Toto je lokálna premenná"
print(lokalna_premenna) # Toto funguje správne
funkcia()
# print(lokalna_premenna) # Toto by spôsobilo chybu
Globálne premenné #
- Definované mimo akýchkoľvek funkcií
- Prístupné z akéhokoľvek miesta v rámci kódu
globalna_premenna = "Toto je globálna premenná"
def funkcia():
print(globalna_premenna) # Toto funguje správne
funkcia()
print(globalna_premenna) # Toto tiež funguje správne
Použitie globálnych premenných vo funkcii
- Ak chcete zmeniť globálnu premennú vo funkcii, musíte ju označiť pomocou kľúčového slova ‘global’.
globalna_premenna = "Pôvodná hodnota" def zmenGlobalnu(): global globalna_premenna globalna_premenna = "Nová hodnota" print(globalna_premenna) # Vypíše "Pôvodná hodnota" zmenGlobalnu() print(globalna_premenna) # Vypíše "Nová hodnota"
Pravidlá pre Mená Premenných #
- Musia začínať písmenom alebo podtržníkom.
- Nemôžu začínať číslom.
- Môžu obsahovať alfanumerické znaky a podtržníky (A-z, 0-9, a _).
- Sú citlivé na veľkosť písmen, t.j. “Premenna” a “premenna” sú dve rozdielne premenné.
Dobré Praktiky pri Pomenovaní Premenných #
- Používajte zrozumiteľné a popisné názvy.
- Oddelujte slová podtržníkom (napr. “moja_premenna”).
- Začnite privátne premenné s podtržníkom (napr. “_skryta_premenna”).
- Vyhnite sa používaniu interných kľúčových slov Pythonu ako názvy (napr. “list”, “str”).
Pravidlá pre premenné #
- Premenné by mali mať významné názvy.
- Používajte lokálne premenné pre dáta relevantné len pre funkciu.
- Obmedzte použitie globálnych premenných kvôli lepšej udržateľnosti kódu.
Import modulu #
Import modulu #
Čo Robí ‘import’ #
- Nahráva modul a umožňuje prístup k jeho funkciám, triedam a premenným.
- Vyhľadá súbory s rozšírením .py, kompiluje ich do .pyc (ak je to potrebné) a potom spúšťa inicializačný kód.
Ako Používať ‘import’ #
- Ak chcete importovať celý modul, jednoducho použite príkaz ‘import’ nasledovaný názvom modulu.
import math
- Teraz môžete pristupovať k funkciám a premenným v module ‘math’ s použitím bodkovej notácie.
hodnota_pi = math.pi koren = math.sqrt(16)
Importovanie Špecifických Funkcií #
- Môžete tiež importovať špecifické funkcie alebo komponenty z modulu, čo je užitočné, ak nepotrebujete celý modul.
from math import sqrt, pi
- Takto môžete používať ‘sqrt’ a ‘pi’ priamo bez potreby predpony ‘math.’.
koren = sqrt(16) hodnota_pi = pi
Importovanie s Aliasom #
- Ak je názov modulu dlhý alebo sa s ním ťažko pracuje, môžete mu priradiť alias.
import numpy as np
- Modul ’numpy’ je teraz prístupný pod skráteným názvom ’np’.
pole = np.array([1, 2, 3])
Dôvody Použitia ‘import’ #
- Umožňuje znovupoužitie kódu, ktorý bol napísaný a otestovaný inými programátormi.
- Udržuje váš hlavný program čistý a ľahko čitateľný.
- Optimalizuje pamäťové a časové zdroje tým, že nahráva iba tie moduly, ktoré sú potrebné.
Dôležité Poznámky #
- Pri importovaní modulov by ste mali mať na pamäti poradie vyhľadávania:
- Aktuálny adresár.
- Adresáre uvedené v premennej prostredia PYTHONPATH.
- Štandardná knižnica.
- Zbytočné importovanie modulov môže viesť k zvýšeniu pamäťovej záťaže a spomaleniu načítania programu.
Dátové Typy #
Dátové Typy #
Číselné Typy #
- Int (Celé čísla): Reprezentujú celé čísla, môžu byť kladné alebo záporné bez desatinnej časti.
- Float (Desatinné čísla): Čísla s desatinnou časťou alebo vedeckým zápisom.
- Complex (Komplexné čísla): Skladajú sa z reálnej a imaginárnej časti, napríklad 2 + 3j.
Textové Typy #
- Str (Reťazce): Uchovávajú postupnosť Unicode znakov, teda text.
Zoznamové Typy #
- List (Zoznamy): Sú zmeniteľné, môžu obsahovať rôzne dátové typy a sú indexované.
- Tuple (N-tice): Sú nemenné a indexované, podobne ako zoznamy.
- Range (Rozsah): Reprezentujú postupnosť čísel.
Mapovacie Typy #
- Dict (Slovníky): Neusporiadané kolekcie s párom kľúč-hodnota.
Boolovský Typ #
- Bool (Boolovská hodnota): Môže nadobúdať len dve hodnoty: True alebo False.
Príklady Použitia #
# Číselné typy
cele_cislo = 10
desatinne_cislo = 10.5
komplexne_cislo = 3 + 4j
# Textový typ
retazec = "Ahoj svet"
# Seznamové typy
zoznam = [1, 2, 3]
ntica = (1, 2, 3)
rozsah = range(10)
# Mapovacie typy
slovnik = {"meno": "Eva", "vek": 28}
# Množinové typy
mnozina = {1, 2, 3}
nemenna_mnozina = frozenset([1, 2, 3])
# Boolovský typ
pravdivostna_hodnota = True
Loops / cyklus #
Loops / cykly #
For cyklus #
- Používa sa na iteráciu cez sekvenciu (napr. zoznam, slovník, množina, reťazec)
- Iteruje presne toľkokrát, koľko je prvkov v sekvencii
# Iterácia cez zoznam
cisla = [1, 2, 3, 4, 5]
for cislo in cisla:
print(cislo)
# Vypíše čísla od 1 do 5
# Iterácia cez reťazec
meno = "Peter"
for znak in meno:
print(znak)
# Vypíše písmená mena Peter
- Cyklus for je možné tiež použiť s funkciou range()
for i in range(5):
print(i)
# Vypíše čísla od 0 do 4
While cyklus #
- Opakuje blok kódu tak dlho, kým je podmienka pravdivá
- Dôležité je nezabudnúť na aktualizáciu premennej používanej v podmienke, inak môže dôjsť k nekonečnému cyklu
i = 0
while i < 5:
print(i)
i += 1 # Veľmi dôležité aktualizovať i, inak by cyklus bol nekonečný
# Vypíše čísla od 0 do 4
Kedy použiť ‘for’ a kedy ‘while’ #
- ‘For’ je lepšie pre prípady, kde viete, koľkokrát chcete iterovať
- ‘While’ je vhodnejší, keď iterujete dokým nie je splnená určitá podmienka, bez ohľadu na počet iterácií
List / Zoznam #
List / Zoznam #
Čo je zoznam? #
- Zoznam je usporiadaná kolekcia položiek (môžu byť rôznych typov)
- Zoznamy sú zmeniteľné, čo znamená, že položky v nich môžete meniť
Vytvorenie zoznamu #
- Zoznamy sa vytvárajú umiestnením položiek oddelených čiarkami do hranatých zátvoriek []
moj_zoznam = [1, 2, 3, 'jablko', 'banán']
Prístup k položkám zoznamu #
- K položkám zoznamu pristupujete pomocou indexu (začína od 0)
prvy_prvok = moj_zoznam[0] # vráti 1
posledny_prvok = moj_zoznam[-1] # vráti 'banán' (záporný index pristupuje od konca)
Zmena hodnoty položky #
- Môžete zmeniť hodnotu položky priradením novej hodnoty na určitý index
moj_zoznam[1] = 'hruška' # zmení druhý prvok z 2 na 'hruška'
Pridanie položky #
- Na pridanie položiek na koniec zoznamu použijete metódu append()
moj_zoznam.append('pomaranč') # pridá 'pomaranč' na koniec zoznamu
Vloženie položky #
- Na vloženie položky na špecifický index použijete metódu insert()
moj_zoznam.insert(1, 'kiwi') # vloží 'kiwi' na pozíciu s indexom 1
Odstránenie položky #
- Položky môžete odstrániť pomocou metódy remove() alebo del klauzuly
moj_zoznam.remove('jablko') # odstráni 'jablko' z zoznamu
del moj_zoznam[0] # odstráni prvú položku (teraz už 'kiwi')
Prechádzanie zoznamu #
- Môžete prechádzať zoznam cyklom for
for prvok in moj_zoznam:
print(prvok) # vypíše všetky položky v zozname
List comprehension #
- Vytvorenie novej zoznamu z existujúceho pomocou elegantnej formy jednoradkového for cyklu
kvadraty = [x**2 for x in range(10)] # vytvorí zoznam kvadrátov čísel od 0 do 9
Rozšírené operácie so zoznamami #
- Metódy ako sort(), reverse(), a funkcie ako len(), max(), min() poskytujú ďalšie manipulácie so zoznamami
moj_zoznam.sort() # zoradí zoznam
moj_zoznam.reverse() # obráti poradie prvkov v zozname
pocet_prvkov = len(moj_zoznam) # získa počet prvkov v zozname
najvacsi_prvok = max(moj_zoznam) # získa najväčší prvok v zozname (ak sú prvky porovnateľné)
najmensi_prvok = min(moj_zoznam) # získa najmenší prvok v zozname (ak sú prvky porovnateľné)
String / Text #
String / Text #
Základy #
- Reťazce sú sekvencie znakov obklopené úvodzovkami.
- Sú nemenné, čo znamená, že ich nemôžete meniť po vytvorení.
Vytvorenie Reťazca #
moj_retezec = "Toto je reťazec"
viacriadkovy_retezec = """Toto je
viacriadkový reťazec"""
Prístup k Znakom #
- Použite indexáciu alebo rezy (slicing) na prístup k určitým častiam reťazca.
prvy_znak = moj_retezec[0]
posledny_znak = moj_retezec[-1]
podretezec = moj_retezec[1:5] # vráti znaky od indexu 1 po 4
Konkatenácia #
- Dva alebo viac reťazcov môžete spojiť pomocou operátora `+`.
spojeny_retezec = "Hello" + " " + "World!"
Opakovanie Reťazca #
- Reťazec môžete opakovať použitím operátora `*`.
opakovany_retezec = "opakuj " * 3
Dĺžka Reťazca #
- Dĺžku reťazca získate pomocou funkcie `len()`.
dlzka = len(moj_retezec)
Nahradenie Subreťazca #
- Metóda `replace()` vám umožní nahradit výskyt subreťazca iným reťazcom.
nahradeny_retezec = moj_retezec.replace("je", "nie je")
Rozdelenie Reťazca #
- Metóda `split()` rozdelí reťazec na zoznam reťazcov na základe oddelovača.
rozdeleny_retezec = "jedna, dve, tri".split(", ")
Odstránenie Bielych Znakov #
- Metódy `strip()`, `rstrip()` a `lstrip()` odstránia biele znaky na začiatku a/alebo konci reťazca.
ostripany_retezec = " okraje ".strip()
Formátovanie Reťazca #
- Metóda `format()` alebo f-stringy môžu byť použité na vloženie premenných alebo výrazov do reťazca.
meno = "Marek"
vek = 30
formatovany_retezec = "Meno: {}, Vek: {}".format(meno, vek)
f_string = f"Meno: {meno}, Vek: {vek}"
Hľadanie Subreťazcov #
- Metódy `find()` a `index()` vám umožnia lokalizovať pozíciu subreťazca v rámci reťazca.
pozicia = moj_retezec.find("je") # Vráti index prvej výskytu alebo -1, ak sa nenájde
Kontrola Obsahu Reťazca #
- Metódy ako `startswith()`, `endswith()`, `isnumeric()`, atď., môžu byť použité na testovanie charakteristik reťazca.
zacina_s = moj_retezec.startswith("Toto")
je_cislo = "123".isnumeric()
Rozdiely medzi Zoznamom a Reťazcom v Pythoni #
Zoznam (List)
- Mutabilita: Zoznamy sú zmeniteľné, t.j. ich obsah možno meniť po vytvorení.
- Typy prvkov: Zoznam môže obsahovať prvky rôznych dátových typov.
- Syntax: Zoznamy sú definované pomocou hranatých zátvoriek ([]) a prvky sú oddelené čiarkami.
- Príklad:
moj_zoznam = [1, "hello", [1, 2, 3]]
- Použitie: Zoznamy sú vhodné na ukladanie kolekcií objektov, ktoré sa môžu počas behu programu meniť.
Reťazec (String)
- Nemutabilita: Reťazce sú nemenné. Po ich vytvorení nemožno meniť ich obsah, len vytvoriť nový reťazec.
- Typy znakov: Reťazec je sekvenčná kolekcia znakov (vždy typu str).
- Syntax: Reťazce sú obklopené úvodzovkami (’…’, “…”, ‘’’…’’’ alebo “”"…""").
- Príklad:
moj_string = "hello"
- Použitie: Reťazce sa používajú na reprezentáciu textových dát, ako sú slová a vety.
Kľúčové rozdiely
- Mutabilita: Zoznamy sú mutable a reťazce sú immutable.
- Typy prvkov: Zoznamy môžu obsahovať mix typov; reťazce obsahujú len znaky.
- Použitie: Zoznamy pre meniteľné kolekcie objektov; reťazce pre nemenné sekvencie textu.
Slovník / Dict #
Slovník / Dict #
V Pythone je slovník (dict) zbierka kľúč-hodnota párov. Slovník je neusporiadaná, zmeniteľná a indexovaná kolekcia. Kľúče slovníka sú jedinečné a nesmú sa opakovať.
Vytvorenie Slovníka #
Nový slovník môžete vytvoriť umiestnením párov kľúč-hodnota do zložených zátvoriek {}.
moj_slovnik = {'meno': 'Peter', 'vek': 28}
Prístup k Hodnotám #
Hodnotu získate tak, že sa odkážete na jej kľúč.
print(moj_slovnik['meno']) # vypíše "Peter".
Pridanie alebo Zmena Prvkov #
Pridať alebo zmeniť hodnotu môžete priradením hodnoty k kľúču.
moj_slovnik['vek'] = 29
Odstránenie Prvkov #
Prvok môžete odstrániť pomocou príkazu del alebo metódy pop().
del moj_slovnik['vek']
#alebo
moj_slovnik.pop('vek')
Prechádzanie Slovníka #
Môžete prechádzať kľúče, hodnoty alebo oboje pomocou metód keys(), values() alebo items().
for k in moj_slovnik.keys():
print(k)
for v in moj_slovnik.values():
print(v)`
for k, v in moj_slovnik.items():
print(f"{k}: {v}")
Kontrola Existencie Kľúča #
Zistiť, či kľúč existuje, môžete pomocou operátora in.
if 'meno' in moj_slovnik:
print("Meno je v slovníku.")
Vstavané Metódy Slovníka #
- clear(): Vymaže všetky prvky zo slovníka.
- copy(): Vráti kópiu slovníka.
- get(kľúč): Vráti hodnotu pre daný kľúč.
- update({kľúč: hodnota}): Pridá pár(y) do slovníka.
moj_slovnik = {'meno': 'Eva', 'vek': 32}
moj_slovnik['práca'] = 'inžinierka'
if 'vek' in moj_slovnik:
print(f"Eva má {moj_slovnik['vek']} rokov.")
moj_slovnik.update({'vek': 33, 'obľúbená farba': 'modrá'})
for k, v in moj_slovnik.items():
print(f"{k}: {v}")