====== 3. Cykly, podmínky, funkce ====== ===== Procvičovaná témata ===== * Podmínky (''if'', ''elif'', ''else'') * Cykly (''while'', ''for'') * Funkce ===== Příklady k procvičení ===== 1. Nechte vypsat 2021 krát za sebou své jméno (v jednom řádku). //Příklad výstupu:// karelkarelkarelkarelkarel(...)karekarel 2. Vytvořte pole všech celočíselných násobků čísla 42 větších než 0 a menších než 10000. Nechte ho vypsat. //Výstup:// [42, 84, 126, 168, 210, 252, 294, 336, 378, 420, 462, 504, 546, 588, 630, 672, 714, 756, 798, 840, 882, 924, 966, 1008, 1050, 1092, 1134, 1176, 1218, 1260, 1302, 1344, 1386, 1428, 1470, 1512, 1554, 1596, 1638, 1680, 1722, 1764, 1806, 1848, 1890, 1932, 1974, 2016, 2058, 2100, 2142, 2184, 2226, 2268, 2310, 2352, 2394, 2436, 2478, 2520, 2562, 2604, 2646, 2688, 2730, 2772, 2814, 2856, 2898, 2940, 2982, 3024, 3066, 3108, 3150, 3192, 3234, 3276, 3318, 3360, 3402, 3444, 3486, 3528, 3570, 3612, 3654, 3696, 3738, 3780, 3822, 3864, 3906, 3948, 3990, 4032, 4074, 4116, 4158, 4200, 4242, 4284, 4326, 4368, 4410, 4452, 4494, 4536, 4578, 4620, 4662, 4704, 4746, 4788, 4830, 4872, 4914, 4956, 4998, 5040, 5082, 5124, 5166, 5208, 5250, 5292, 5334, 5376, 5418, 5460, 5502, 5544, 5586, 5628, 5670, 5712, 5754, 5796, 5838, 5880, 5922, 5964, 6006, 6048, 6090, 6132, 6174, 6216, 6258, 6300, 6342, 6384, 6426, 6468, 6510, 6552, 6594, 6636, 6678, 6720, 6762, 6804, 6846, 6888, 6930, 6972, 7014, 7056, 7098, 7140, 7182, 7224, 7266, 7308, 7350, 7392, 7434, 7476, 7518, 7560, 7602, 7644, 7686, 7728, 7770, 7812, 7854, 7896, 7938, 7980, 8022, 8064, 8106, 8148, 8190, 8232, 8274, 8316, 8358, 8400, 8442, 8484, 8526, 8568, 8610, 8652, 8694, 8736, 8778, 8820, 8862, 8904, 8946, 8988, 9030, 9072, 9114, 9156, 9198, 9240, 9282, 9324, 9366, 9408, 9450, 9492, 9534, 9576, 9618, 9660, 9702, 9744, 9786, 9828, 9870, 9912, 9954, 9996] 3. Nechte vypsat mřížku $n\times n$, kde $n$ zadá uživatel pomocí metody ''input''. Výstup pro $n=4$: |-----|-----|-----|-----| | | | | | | | | | | |-----|-----|-----|-----| | | | | | | | | | | |-----|-----|-----|-----| | | | | | | | | | | |-----|-----|-----|-----| | | | | | | | | | | |-----|-----|-----|-----| 4. Vypište následující tabulku: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 * Jak to naprogramujete pomocí jednoho cyklu? Jak pomocí dvou vnořených cyklů? Co se vám zdá lepší a proč? * Nyní zkuste vypsat pouze diagonálu: 0 11 22 33 44 55 66 77 88 99 * A nyní obě diagonály: 0 9 11 18 22 27 33 36 44 45 54 55 63 66 72 77 81 88 90 99 5. Napište funkci, která pro zadané parametry ''​a'',​ ''​b''​ a ''​c''​ vrátí reálné kořeny kvadratické rovnice ''​x1''​ a ''​x2''​. Pokud reálné kořeny neexistují,​ funkce vrací ''​None''​. Dále napište funkci, která ověří správnost řešení vyhodnocením rovnice v bodě ''​x''​. 6. Napište funkci ''capitalize'', která pro zadané pole textových řetězců vrátí to samé pole, ale s řetězci zapsanými velkými písmeny: //Program:// def capitalize(input_list): """ ??? """ print(capitalize(['foo', 'bar'])) //Výstup:// ['FOO', 'BAR'] 7. Co bude výstupem následujícího programu? def f(i): return lambda i: print(i**2) f(10)(5) 8. Naprogramujte zjednodušenou verzi programu ''cal''. * Nejdříve zkuste vypsat: Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 * Pak zkuste kalendář pro mesíc září: September Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 * nebo rovnou kalendář pro tři po sobě jdoucí měsíce: September Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 October Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 November Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 * Parametrizujte kód, pokud tak již nemáte, a zkuste vypsat kalendář pro různý rozsah měsíců. 9. Seznam vozů v garáži je popsán datovou strukturou (viz níže). Vypište jmenný seznam majitelů vozů. Kolik je v garáži vozů zn. Volvo? garaz = [("Petr Kellner", ["Porsche", "BMW", "Volvo"]), ("Radovan Vitek", ["BMW", "Volvo"]), ("Karel Komarek", ["BMW", "Porsche"]), ("Andrej Babis", ["BMW", "Ferrari", "Ford Mustang"])] 10. Vytvořte seznam reprezentující matici. Napište program, který vypíše jednotlivé prvky matice. 11. Napište funkce, které provedou operace sčítání a skalárního násobení $s$ vektorů. 12. Napište funkci, jejíž návratová hodnota bude $n$-tý člen [[https://cs.wikipedia.org/wiki/Fibonacciho_posloupnost|Fibonnaciho]] posloupnosti. Pokuste se o implementaci pomocí rekurze a také o implemen taci pomocí cyklu. 13. Stanovte [[https://cs.wikipedia.org/wiki/P%C3%AD_(%C4%8D%C3%ADslo)|Ludolfovo číslo]] $\pi$ pomocí metody [[https://cs.wikipedia.org/wiki/Metoda_Monte_Carlo|Monte Carlo]]