Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

15. diel - Podmienky tretíkrát - Ternárny výraz a prepadávací match

V predchádzajúcom kvíze, Kvíz - Textové reťazce v Pythone, sme si overili nadobudnuté skúsenosti z predchádzajúcich lekcií.

V dnešnom Python tutoriále si predstavíme dve ďalšie konštrukcie, ktoré súvisia s podmienkami. Konkrétne pôjde o ternárne výrazy a prepadávanie v konštrukcii match. Ide o oddychový tutoriál, ktorým túto tému dokončíme.

Ternárny operátor

Často sa nám stáva, že niekde potrebujeme nastaviť dve rôzne hodnoty podľa toho, či platí nejaká podmienka.

Príklad - Výpis pohlavia

Predstavme si, že máme napr. pohlavie užívateľa uložené ako bool (muž by bol True) a my by sme ho chceli previesť do textu. S doterajšími znalosťami by sme napísali asi takýto kód:

Výstup programu je samozrejme nasledujúci:

Kód je pomerne ukecaný na to, že len prepína medzi dvoma hodnotami. Preto programovacie jazyky často podporujú tzv. ternárny výraz.

Syntax ternárneho výrazu

Pomocou tohto operátora môžeme získať hodnotu podľa platnosti logického výrazu. Zapíšeme ho takto:

Zátvorka pre vyhodnocovaný výraz nie je nutná, je tu len pre prehľadnosť a lepšiu orientáciu. V praxi sa však takmer nepoužíva.

Najprv začína prvni_hodnota, určená pre prípad, že výraz je True. Nasleduje samotný výraz podmienky, ktorý je pre prehľadnosť umiestnený do nepovinnej zátvorky, a potom else pre prípad, že podmienka nadobúda hodnotu False. Ako ľahké!:) Názov "ternárny výraz" je odvodený od toho, že má tri časti (prvú hodnotu, podmienku a druhú hodnotu), preto ternárne.

Príklad - Výpis pohlavia pomocou ternárneho výrazu

Poďme si ternárny operátor vyskúšať na príklade s pohlavím:

Namiesto dátového typu bool samozrejme môžeme do zátvorky napísať akúkoľvek inú podmienku, napríklad " plnoletý " if(vek >= 18) else " maloletý " V prípade jednoduchých " plnoletý " if(vek >= 18) else " maloletý " môžeme zátvorku aj vynechať.

Vnáranie ternárnych výrazov

Ternárne operátory je možné teoreticky zanárať do seba a tým reagovať aj na tri a viac hodnôt. Avšak, vo väčšine prípadov zanáranie skôr kód zneprehľadní. Vznikajú totiž dlhé alebo podivne zalomené riadky a nie je na prvý pohľad vidieť, aká časť sa kedy spustí. Ukážme si, ako by sa pomocou vnorovania ternárnych výrazov vyriešil výpis troch smajlíkov:

Pre príklad vyššie by bolo oveľa lepšie vytvoriť vlastnú metódu, čo si ale ukážeme až v nadväzujúcom kurze Objektovo orientované programovanie v Pythone.

Konštrukcia match s prepadávaním

S konštrukciou match sme sa už stretli v lekcii Podmienky (vetvenia) druhýkrát: Konštrukcia match. Dnes si ukážeme jej ďalšie použitie. Python vie v konštrukcii match využiť jeden zaujímavý variant, tzv. prepadávanie. Ak potrebujeme vo viacerých blokoch case vykonávať rovnaký kód, stačí ich hodnoty vložiť za seba a oddeliť ich zvislou čiarou | a neukončovať každý blok pomocou :. Celú skupinu tým vyriešime pomocou jediného case.

Príklad - Štvrťrok

Predpokladajme, že chceme podľa mesiaca v roku zistiť, aký je štvrťrok. Pomocou blokov if a else by príklad vyzeral nasledovne:

Ako ale použiť konštrukciu match pre takýto príklad? Možno by vás napadol nasledujúci zápis:

Príklad funguje spoľahlivo, problém však je, že sme si týmto zápisom veľmi nepomohli. Podobnému repetitívnemu kódu by sme sa vždy mali vyhýbať.

Prepadávanie

Skúsme to ešte raz a využime tzv. prepadávanie. Bloky s rovnakým výstupom sa zjednotia pomocou znaku |:

Je to oveľa lepšie, než vypisovať samostatný case pre každý z 12 mesiacov, že? Výstup programu potom bude vyzerať nasledovne:

Tento zápis je už oveľa prehľadnejší. Konštrukcia match má však pridanú hodnotu v prípade, keď nemôžeme použiť väčší/menší a ide o zoznam hodnôt, tu je to skôr redundantný kód plný prázdnych case.

Prepadávanie používajte v konštrukcii match len pokiaľ k nemu máte dobrý dôvod, avšak je dôležité, aby ste ho vedeli čítať, keď naň niekde narazíte.

V budúcej lekcii, Cyklus while v Pythone , sa budeme ešte venovať cyklom. Naučíme sa používať while cyklus a vylepšíme našu kalkulačku.


 

Predchádzajúci článok
Kvíz - Textové reťazce v Pythone
Všetky články v sekcii
Základné konštrukcie jazyka Python
Preskočiť článok
(neodporúčame)
Cyklus while v Pythone
Článok pre vás napísal Karel Zaoral
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Karel Zaoral
Aktivity