## Shrnuti z drivejsich cviceni - zaklady

# Operatory
print( 13 % 5 )  # vypise zbytek po deleni 13/5
print( 13 // 5 ) # vypise vysledek celociselneho deleni 13/5
print( 13 / 5 )  # vysledkem deleni je desetinne cislo
print( 13 ** 5 ) # vypise vysledek operace '13 na patou'
                 # dalsi operatory: + - * ** / // % < > <= >= ==

# Zakladni funkce
print(round(5.6)) # zaokrouhleni 5.6 na 6
print(ord('A'))   # ordinalni hodnota pismene A, tedy cislo, ktere reprezentuje pismeno A v Unicode
print(chr(65))    # vypise pismeno, ktere je reprezentovane v Unicode hodnotou 65 - inverze k ord()
int("123")        # prevod textu "123" na cislo 123
str(123)          # prevod cisla 123 na text "123"

# for cyklus
for promenna in range(10):
    print(promenna)

# while cyklus
cisla = [1,4,5,8,7,6,2,6,9,4,5,0,1,2]
index = 0
while cisla[index] != 0:
    print(cisla[index])
    index += 1

# Podminka if
import random
nahodneCislo = random.randint(0,3)
if nahodneCislo == 0:
    print("ahoj")
elif nahodneCislo == 1:
    print("cau")
else:
    print("nazdar")

promenna = 10
if promenna == 10:
    print("Vysledek je opravdu 10.")
elif promenna == 0:
    print("Promenna na zacatku byla 0.")
else:
    print("Toto se vypise ve vsech ostatnich pripadech.")

# Funkce s return
def funkceSReturn(vstup):
    return vstup + 5

print(funkceSReturn(4)) # Vypise 4 + 5 = 9

# Ukazka volitelneho parametru u funkce
def funkceSeDvemaParametry(prvni = 1, druhy = 2):
    return prvni + druhy

print(funkceSeDvemaParametry(3, 7)) # Vypise 3+7 = 10
print(funkceSeDvemaParametry(3)) # Vypise 3+2 = 5
print(funkceSeDvemaParametry()) # Vypise 1+2 = 3


## Retezce a seznamy

# Vytvoreni noveho retezce
retezec = "ahoj"
text = "Toto je cela veta."

# Do promenne seznam ulozi vsechny hodnoty v hranatych zavorkach
seznam = [5,1,3,2,4,8,9,6,7]

# Do seznamu na treti pozici (cislujeme od nuly) ulozime 8, tedy misto 2 ulozime 8
seznam[3] = 8

# Prida nove cislo na konec seznamu
seznam.append(9)

# Vypise cely seznam
print(seznam)

# zakladni statistika nad seznamy
print( min(seznam), max(seznam), sum(seznam) )
print( len(seznam), sum(seznam)/len(seznam) )

# Ziskam cislo ulozene na pozici 2,
# index -1 znaci posledni hodnotu v seznamu
print( seznam[2], seznam[-1] )

# Spojeni svou retezcu
print(retezec + " Honzo")

# Vytvoreni seznamu cisel
seznamCisel = [1,2,3,4,5,6,7,8,9]

# Vytvoreni seznamu retezcu
seznamRetezcu = ["ahoj", "nazdar", "cau"]

# Vypsani retezce v seznamu na druhe pozici (na indexu 1)
print(seznamRetezcu[1])

# Pridani nove honoty na konec seznamu
seznamRetezcu.append("zdarec")
print(seznamRetezcu)

# Vypsani delky retezce nebo seznamu
print(len(seznamRetezcu))
print(len(text))

# Prochazeni retezcem po pismenech
for i in range(len(text)):
    print(text[i], end="|")
print()

# Nebo pracujeme primo s pismeny a ne s indexy
for pismeno in text:
    print(pismeno, end="-")
print()


## Slovniky:
morse = {'A': '.-',
         'B': '-...',
         'C': '-.-.',
         'D': '-..',
         'E': '.',
         'F': '..-.'}
def toMorse(text):
    result = ''
    for c in text:
        result += morse.get(c, '?') + '|'
    return result

print(toMorse("ABECEDA"))
