1. seminář - Opakování

TEACHINGZPP2

Opakování předmětu ZPP1


    # Jednořádkový komentář začíná znakem #.

    """ Pro víceřádkový komentář se používá víceřádkový řetězec.
    """

    # 1. Datové typy a operátory

    # Čísla
    1, 2.0, 1e-4

    # Aritmetické operace
    1 + 3  # (Sčítání)
    2 - 1  # (Odčítání)
    3 * 2  # (Násobení)
    35 / 5 # (Dělení) Pozor vrací desetinné číslo!
    5 // 3 # (Celočíselné dělení)
    7 % 3  # (Modulo)
    2**2   # (Mocnění)

    # Logické hodnoty
    True
    False

    # Logické operace
    not True        # (Negace)
    True and False  # (Logický and)
    True or False   # (Logický or)

    # Porovnávání hodnot
    1 == 1  # (Rovnost)
    2 != 1  # (Nerovnost)
    10 < 2  # (Menší)
    2 > 10  # (Větší)
    2 <= 4  # (Menší nebo rovno)
    4 >= 2  # (Větší nebo rovno)


    # Řetězce
    "Ahoj Světe v uvozovkách"
    'Ahoj Světe v apostrofech'
    
    # Formátování
    "{}můžeme formátovat {}".format("Takto", "řetězce")
    
    # Znak -> ASCII hodnota
    ord('A') # -> 65
    
    # ASCII hodnota -> Znak
    chr(65) # -> A

    # Převod mezi datovými typy (přetypování)
    int(4.2) # převod desetinného čísla na celé číslo 4
    int("42") # převod řetězce čísla na celé číslo 42
    float(42) # převod celého čísla na desetinné číslo 42.0
    float("42") # převod řetězce na desetinné číslo  42.0
    str(4.2) # převod desetinného čísla na řetězec "4.2"
    str(42)  # převod celého čísla na řetězec "42"
    
    # Konverze které skončí chybou
    int("4.2") # způsobí chybu
    int("text") # způsobí chybu

    # None
    None  # Ekvivalent NULL, nil

    # 2. Proměnné a kolekce

    # Použití fuknce print
    print("Hello World.")

    # Příkaz přiřazení
    # Názvy proměnných obsahují malá písmena a slova oddělujeme _ (podtržítko)
    kladne_cislo = 5

    # Seznam
    seznam = []
    seznam_s_hodnotami = [4, 5, 6]

    # Vložení prvku na konec seznamu
    seznam.append(1)
    seznam.append(2)

    # Odebrání prvku Z konce seznamu
    sez.pop()

    # Pro přístup k prvkům seznamu můžeme použít index
    seznam[0], seznam[-1] # (postupujeme odzadu a -1 je poslední prvek)

    # Podseznamy
    seznam[1:3]  # Prvky mezi indexy 1 a 3 včetně.
    seznam[2:]   # Prvky od pozice 2 až po konec seznamu
    seznam[:3]   # První až třetí prvek seznamu

    # Odebrání prvku ze seznamu
    del seznam[2]

    # Délka seznamu
    len(seznam)

    # 3. Větvení programu, cykly

    # Konstrukce IF
    cislo = 2

    if cislo > 9:
        print("Číslo je víceciferné.")
    elif cislo % 2 == 0:
        print("Číslo je jednociferné a sudé.")
    else:
        print("Číslo je jednociferné a liché.")

    # Ternární operátor
    proměnná = výraz_1 if podmínka else výraz_2
    
    cislo = 20
    
    typ_cisla = "Sude" if cislo % 2 == 0 else "Liche"

    # Iterace přes seznam
    for cislo in [1, 2, 3]:
        print(cislo)

    # Iterace přes interval [0, 10)
    for i in range(10):
        print(i)

    # Iterace přes interval [4, 8)
    for i in range(4, 8):
        print(i)
        
    # Iterace přes interval obsahující hodnoty [0, 2, 4, 6, 8]
    for i in range(0, 10, 2):
        print(i)

    # Cyklus while
    x = 0
    while x < 4:
        print(x)
        x += 1

    # 4. Funkce
    def factorial(n):
        if n == 0:
            return 1
        else:
            return n * factorial(n - 1)

    # volání funkce
    factorial(5)

Úkoly

Naprogramujte funkci mocnina(zaklad, exponent) vracející hodnotu zakladexponent. Při implementaci funkce nepoužívejte operátor **.
Pomocí hrubé síly prolomte Caesarovu šifru: ”mrwfvqbfcryivfiqborxqlfrmnqanmirpvpbfvcerwrfarqnxbhcvgibopubqr”
Napište program, který pro zadanou hodnotu n vytvoří matici obsahující převrácenou diagonálu.

    Výstup pro n = 8
    
    [[0, 0, 0, 0, 0, 0, 0, 1],
    [0, 0, 0, 0, 0, 0, 1, 0],
    [0, 0, 0, 0, 0, 1, 0, 0],
    [0, 0, 0, 0, 1, 0, 0, 0],
    [0, 0, 0, 1, 0, 0, 0, 0],
    [0, 0, 1, 0, 0, 0, 0, 0],
    [0, 1, 0, 0, 0, 0, 0, 0],
    [1, 0, 0, 0, 0, 0, 0, 0]]

Napište program, který oveří zda dva zadané seznamy obsahují stejné hodnoty. Jednotlivé prvky mohou být v jiném pořadí. Pozor na případy, kdy se hodnoty opakují.
Napište program, který vypíše číslo zadané v desítkové soustavě jako binární číslo.