Ulohy_zadani

In [ ]:
from IPython.display import Image

Úlohy na procvičení základních operací v Pythonu

Základy

Úloha 1 - na zahřátí

  • procvičení: tvorba proměnných, aritmetické operace, podmínky, tisk

Výpočet BMI člověka: $$ \mathrm{bmi} = \frac{w}{h^2}, $$ kde h je výška [m] a w je hmotnost [kg].

  1. vytvořte proměnnou height (nebo h) a weight (nebo w) a vložte do ní nějaké hodnoty imaginárního člověka
  2. do proměnné bmi uložte výsledek
  3. vytiskněte "Výsledné BMI = XXX" s přesností na jedno desetinné místo
In [ ]:
 
  1. vytvořte proměnnou gender, která může nabývat hodnot "m" (muž) nebo "f" (žena)
  2. na základě tabulky vytvořte mechanizmus, který vypíše, zda má daná osoba podváhu, těžký stupeň nebo jinak něco mezi
ženy muži
podváha $<$ 19 $<$ 20
normální stav $<$ 24 $<$ 25
mírná obezita $<$ 29 $<$ 30
střední stupeň $<$ 39 $<$ 40
těžký stupeň $\geq$ 39 $\geq$40
In [ ]:
 

Úloha 2

  • procvičení: cykly, listy/tuply, slovník
  • použijte pouze cykly (žádné vestavěné funkce)
  1. vytvořte funkci get_count(source, fval), která vrátí počet výskytů fval
  2. vytvořte funkci get_index, která v listu nalezne zadanou hodnotu a vrátí jeho polohu/index
  3. v get_index vytvořte přepínač, který vrátí výsledek po prvním výskytu a skončí
  4. vytvořte funkci get_counts, která vrátí četnost všech hodnot (pro ukládání výsledků využijte slovník)
  5. ze získaných výsledků vytiskněte jednoduchý histogram
txt
    1 ***
    2 **
    3 *
    4 *****
In [ ]:
# zadáno
data = (1, 2, 3, 4, 7, 3, 2, 2, 3, 5, 2)
In [ ]:
 

Úloha 3

  • procvičení: listy, cykly, funkce

  • máme list length_list naměřených délek

  1. určete velikost souboru dat
  2. vytvořte funci mean, která vrátí střední hodnotu listu $$ \mu = \frac{1}{n} \sum\limits_{i=0}^n x_i $$
  3. pomocí funkce vypočítejte střední hodnotu
  4. vytvořte funkci std, která vrátí směrodatnou odchylku a obsahuje volitelný parametr delta, který je defaultně 0 $$ \sigma = \sqrt{\frac{1}{n - \delta} \sum\limits_{i=0}^n \left( x_i - \mu \right)^2} $$
  5. pomocí funkce std vypočítejte nestranný (nevychýlený) odhad
  6. vytvořte funkce get_max a get_min, která vrátí maximální a minimální hodnotu (pomocí cyklu)
  7. vytvořte funkci, která výsledné hodnoty vytiskne
  8. ze souborů length_txt a time_txt načtěte data do length_list a časů time_list a do proměnné speed_list napočítejte rychlosti $v = \frac{s}{t}$
    • využijte print, type a len pro zjištění toho co a v jaké podobě získáváte
  9. výsledky uložte do souboru results.txt vpodobě tří sloupečků a oddělovač použijte tabulátor
length time speed
1.0    2.2  2.2
with open('nazev_souboru.txt', 'X') as f: 
    #'X' == 'w' zápis (pokud soubor existuje, smaže se jeho obsah)
    #'X' == 'r' čtení, 'X' == 'a' append (pokud soubor existuje, přidá se obsah na jeho konec)
    promenna = f.read() # načtení celého souboru jako jeden textový řetězec
    promenna = f.readlines() # načtení celého souboru - výstupem je list obsahující jednotlivé řádky
    promenna = f.write('retezec') # zapíše řetězec do souboru
    promenna = f.writelines(['radek 1\n', 'radek 2\n', 'radek 3\n'])
In [ ]:
# zadáno
import math # odmocnina math.sqrt nebo mocnina ** ; math.inf nekonečno
length_list = [1.5, 1.6, 1.3, 1.24, 1.65, 1.35, 1.47] # [m]
length_txt = 'length.txt'
time_txt = 'time.txt'

Úloha 4

  • procvičení: cykly, listy
  • vynásobte matici vektorem (kontroly vynechejte)
In [ ]:
# zadáno
mat = [[1, -5],
       [3, 6]]
vec = [-3, 4]
In [ ]:
 

Bonus - násobení matic

In [ ]:
# zadáno
mat = [[1, -5],
       [3, 6]]
vec = [-3, 4]
mat1 = [[1, -5],
        [3, 6]]
mat2 = [[-2, 1],
        [7, 3]]
In [ ]:
 

Vygenerujte Pascalův trojúhelník

Vytvořte generátor Pascalova trojúhelníku, který vygeneruje zadaný počet řádků.

                  1                  
               1     1               
            1     2     1            
         1     3     3     1         
      1     4     6     4     1      
In [ ]:
# zadáno
pascal_triang = [[1], 
                 [1, 1]]
for line in pascal_triang:
    print(line)