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.