====== Zkouška 5.2.2024 ======
Jednotlivé funkce (včetně případných podpůrných) pište do jednoho souboru pojmenovaného ''{login}.py'' a nahrajte do BRUTE (ZK). ''{login}'' nahraďte vaším přihlašovacím jménem (bez složených závorek).
Pokud na lokálním PC není dostupný vhodný editor, můžete využít např. online [[https://jupyter.org/try|JupyterLab]]. V učebnách nelze spustit Visual Studio Code z plochy, je třeba ho najít na disku (C:\Program Files\...).
Odevzdávaný program nemusí být zcela funkční, je možné ohodnotit i jeho dílčí části.
===== 1. příklad =====
**Bodové hodnocení:** 6 bodů
**Zadání:** Napište funkci, která vykreslí ASCII artový objekt - lodičku. Funkce má dva argumenty: znak, kterým je kreslena a příznak, zda je dolní část vyplněna. Pro řešení je třeba použít cykly, přímý výstup na obrazovku nebude uznán.
**Ukázka:**
def priklad1 (znak, vyplnit = False)
# vase implementace
pass
priklad1 ('X')
X X
XX XX
XXX XXX
XXXX XXXX
XXXXX XXXXX
XXXXXX XXXXXX
XXXXXXX XXXXXXX
XXXXXXXX XXXXXXXX
XXXXXXXXX XXXXXXXXX
XXXXXXXXXX XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
priklad1 ('O', False)
O O
OO OO
OOO OOO
OOOO OOOO
OOOOO OOOOO
OOOOOO OOOOOO
OOOOOOO OOOOOOO
OOOOOOOO OOOOOOOO
OOOOOOOOO OOOOOOOOO
OOOOOOOOOO OOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOO
O O
O O
OOOOOOOOOOOOOOOOOOOOOOO
===== 2. příklad =====
**Bodové hodnocení:** 6 bodů
**Zadání:** Napište funkci, který hledá v textovém řetězci slova s nejvyšším počtem samohlásek. Pokud je slov s největším počtem samohlásek více, vypíší se všechna. Slova jsou zapsána pouze ASCII znaky ('a-zA-Z') a jsou oddělená jednou či více mezerami.
**Ukázka:**
def priklad2 (text)
pass
priklad2 ('ahoj jak se mas')
ahoj
===== 3. příklad =====
**Bodové hodnocení:** 8 bodů
Zadání: Napište funkci, který který v seznamu celých čísel hledá nejbližší vyšší číslo k vybranému prvku seznamu. Nejbližší vyšší číslo je prvek seznamu, pro který platí:
* jeho hodnota je vyšší než hodnota zadaného prvku seznamu,
* absolutní rozdíl indexů zadaného prvku a tohoto prvku je minimální (je nejblíže)
* pokud existují dva prvky, které splňují první dvě podmínky, pak je to menší z nich (menší podle hodnoty).
Návratovou hodnotou funkce je ''tuple'', jehož
* první položkou je logická hodnota ''False'' v případě, že došlo k nějaké chybě (seznam měl nulovou délku, nebyl platný zadaný index, nebo v seznamu není větší číslo) a logické hodnota ''True'' v případě, že je vše v pořádku
* druhou položkou je nalezené číslo nebo ''None''
Zkontrolujte správnost zadaných dat (datový typ list nenulové délky, který obsahuje čísla).
**Ukázka:**
def priklad3 (list, index):
pass
# priklad volani
ret = priklad3 ([1, 2, 3, 5, 11, 6, 9, 7, 10, 5, 6], 6)
# overeni vysledku
print(ret)
(True,10)
# Vysvětlení: Nejbližšími vyššími čísly čísla 9 (číslo s indexem 6) jsou čísla 10 a 11, vzdálené od indexu 6 o dvě pozice. Vybírám tedy menší z nich.
ret = priklad3 ([2, 3], 10)
print(ret)
(False, None)