Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

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 Fibonnaciho posloupnosti. Pokuste se o implementaci pomocí rekurze a také o implemen taci pomocí cyklu.

13. Stanovte Ludolfovo číslo $\pi$ pomocí metody Monte Carlo

courses/bab37zpr/tutorials/lab03.txt · Last modified: 2021/10/27 18:19 by vencovac