Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

7. diel - Podmienky (vetvenie) v Pythone

V predchádzajúcom cvičení, Riešené úlohy k 5.-6. lekciu Pythona, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.

V tomto Python tutoriále sa budeme venovať podmienkam. Aby sme si mohli niečo naprogramovať, potrebujeme nejako reagovať na rôzne situácie. Môže to byť napríklad hodnota zadaná užívateľom, podľa ktorej budeme chcieť meniť ďalší beh programu. Tomu sa hovorí, že sa program vetví. Na vetvenie používame podmienky. Na vysvetlenie si vytvoríme program na výpočet odmocniny a vylepšíme našu kalkulačku.

Podmienky – if

Podmienky zapisujeme pomocou kľúčového slova if, za ktorým nasleduje logický výraz zakončený dvojbodkou (:). Ak je výraz v podmienke pravdivý, vykoná sa nasledujúci príkaz. Ak nie, program nasledujúci príkaz preskočí a pokračuje až pod ním. Vyskúšajme si to:

if (15 > 5):
    print("Pravda")
print("Program tu pokračuje ďalej")

Výstup programu:

Jednoduchá podmínka:
Pravda
Program tu pokračuje ďalej

Pokiaľ podmienka platí (čo v našom príklade áno), vykoná sa príkaz vypisujúci do konzoly text Pravda. V oboch prípadoch program pokračuje ďalej. Súčasťou výrazu samozrejme môže byť aj premenná:

a = int(input("Zadaj nejaké číslo: "))
if (a > 5):
    print("Zadal si číslo väčšie ako 5!")
print("Ďakujem za zadanie")

Relačné operátory

Ukážme si teraz relačné operátory, ktoré môžeme vo výrazoch používať:

Význam Operátor
Rovnosť ==
Je ostro väčšia >
Je ostro menší <
Je väčšia alebo rovná >=
Je menšia alebo rovná <=
Nerovnosť !=
Všeobecná negácia not
Rovnosť zapisujeme dvoma == preto, aby sa neplietla s bežným priradením do premennej, ktoré sa robí len jedným =. Pokiaľ chceme výraz znegovať, napíšeme pred neho kľúčové slovo not.

Blok príkazov

Keď budeme chcieť vykonať viac ako len jeden príkaz, musíme každý príkaz vložiť na samostatný riadok odsadený tabulátorom:

a = int(input("Zadaj nejaké číslo, z ktorého spočítam odmocninu: "))
if (a > 0):
    print("Zadal si číslo väčšie ako 0, to znamená, že ho môžem odmocniť!")
    odmocnina = a ** (1 / 2)
    print(f"Odmocnina z čísla {a} je {odmocnina}")
print("Děkuji za zadání")

V konzole potom vidíme výstup:

Výstup podmínky:
Zadaj nejaké číslo, z ktorého spočítam odmocninu:
144
Zadal si číslo väčšie ako 0, to znamená, že ho môžem odmocniť!
Odmocnina z položky 144 je 12.0
Ďakujem za zadanie

Program načíta od užívateľa číslo, a pokiaľ je väčšie ako 0, vypočíta z neho druhú odmocninu. Použili sme tu operátor pre mocniny ** a nastavili zadanú premennú umocnenú exponentom 1/2, čo je ekvivalent pre získanie druhej odmocniny.

Vetva else

Bolo by dobré, keby nám program vyhuboval v prípade, že zadáme záporné číslo. S doterajšími znalosťami by sme napísali niečo ako:

a = int(input("Zadaj nejaké číslo, z ktorého spočítam odmocninu: "))
if (a >= 0):
    print("Zadal si nezáporné číslo, to znamená, že ho môžem odmocniť!")
    odmocnina = a ** (1 / 2)
    print(f"Odmocnina z čísla {a} je {odmocnina} ")
if (a < 0):
    print("Odmocnina zo záporného čísla neexistuje v obore reálnych čísel!")
print("Ďakujem za zadanie&quot;)

Kód však môžeme výrazne zjednodušiť pomocou kľúčového slova else, ktoré vykoná nasledujúci príkaz alebo blok príkazov v prípade, že sa podmienka nevykoná:

a = int(input("Zadaj nejaké číslo, z ktorého spočítam odmocninu: "))
if (a >= 0):
    print("Zadal si nezáporné číslo, to znamená, že ho môžem odmocniť!")
    odmocnina = a ** (1 / 2)
    print(f"Odmocnina z čísla {a} je {odmocnina}")
else:
    print("Odmocnina zo záporného čísla neexistuje v obore reálnych čísel!")
print("Ďakujem za zadanie")

Kód je teraz oveľa prehľadnejší a nemusíme vymýšľať opačnú podmienku, čo by v prípade zloženej podmienky mohlo byť niekedy aj veľmi ťažké. V prípade viacerých príkazov musí byť každý riadok za kľúčovým slovom else odsadený tabulátorom.

Kľúčové slovo else sa využíva aj v prípade, keď potrebujeme v príkaze manipulovať s premennou z podmienky a nemôžeme sa na premennú teda pýtať znova. Program si sám pamätá, že sa podmienka nesplnila, a prejde do vetvy else. Ukážme si to na príklade.

Prehodenie hodnôt premennej

Majme číslo cislo, ktoré bude mať hodnotu 0 alebo 1. Po nás sa bude chcieť, aby sme hodnotu prehodili (ak bude hodnota 0, dosadíme namiesto nej 1, ak bude 1, dosadíme 0). Naivne by sme mohli kód napísať takto:

cislo = 0 # deklarácia premennej s hodnotou 0

if (cislo == 0): # ak je hodnota premennej 0, zmeníme hodnotu na 1
    cislo = 1
if (cislo == 1): # ak je hodnota premennej 1, zmeníme hodnotu na 0
    cislo = 0

print(cislo)

Kód nefunguje, že? Poďme si prejsť, čo bude program robiť. Na začiatku máme v cislo nulu, prvá podmienka sa teda iste splní a dosadí do cislo jedničku. No ale razom sa splní aj druhá podmienka. Čo s tým? Keď podmienky otočíme, budeme mať ten istý problém s jednotkou. Ako z toho von? Áno, použijeme else:

cislo = 0 # deklarácia premennej s hodnotou 0

if (cislo == 0): # ak je hodnota premennej 0, zmeníme hodnotu na 1
    cislo = 1
else: # ak je hodnota premennej 1, zmeníme hodnotu na 0
    cislo = 0

print(cislo)

Program máte samozrejme opäť v prílohe. Skúšajte si vytvárať podobné situácie, znalosti už k tomu máte:-)

V budúcej lekcii, Podmienky (vetvenie) druhýkrát - Konštrukcia match v Pythone , sa vrátime k podmienkam a ukážeme si ďalšiu podporovanú syntax a konštrukciu match.


 

Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 1025x (2.27 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Python

 

Predchádzajúci článok
Riešené úlohy k 5.-6. lekciu Pythona
Všetky články v sekcii
Základné konštrukcie jazyka Python
Preskočiť článok
(neodporúčame)
Podmienky (vetvenie) druhýkrát - Konštrukcia match v Pythone
Článok pre vás napísal gcx11
Avatar
Užívateľské hodnotenie:
18 hlasov
(^_^)
Aktivity