def zarovnani(text, delka):
    """
    zarovnání řetězce

    text: řetězec k zarovnání
    delka: požadovaná délka (alespoň 6)
    návratová hodnota: řetezec délky 'delka'
        je-li 'text' kratší => doplněn zprava mezerami
        je-li 'text' delší => zkrácen + '...' + poslední 2 znaky
    """
    if len(text) <= delka:
        return text.ljust(delka)
    else:
        return text[:delka - 5] + "..." + text[-2:]
    
def prevod_delky(delka):
    """
    převod řetězce s délkou (hodnota + jednotka) na float

    delka: řetězec (číslo, mezera, jednotka), např. '5.6 cm'
        povolené jednotky - mm, cm, dm, m, km
    návratová hodnota: float - délka v metrech
    pro nesprávně formátovaný vstup dojde k chybě nebo je 
    vráceno None
    """
    oddelovac = delka.find(" ") # nalezení mezery
    hodnota = float(delka[:oddelovac]) # převod čísla
    jednotka = delka[oddelovac + 1:] # oddělení jednotky
    if jednotka == "mm":
        return hodnota * 0.001
    elif jednotka == "cm":
        return hodnota * 0.01
    elif jednotka == "dm":
        return hodnota * 0.1
    elif jednotka == "m":
        return hodnota
    elif jednotka == "km":
        return hodnota * 1000.0

def pocet_bez_velikosti(text, hledame):
    """
    počet výskytů řetězce (bez ohledu na velikost písmen)

    text: řetězec k prohledávání
    hledame: hledaný řetězec
    návratová hodnota: int - počet výskytů (nepřekrývajících se)
    """
    # převedeme řetězce na malá písmena a použijeme metodu count
    return text.lower().count(hledame.lower())

def hledej_znaky(data, znaky):
    """
    hledání pozice libovolného ze zadaných znaků

    data: řetězec, který je prohledáván
    znaky: řetězec složený z hledaných znaků
    návratová hodnota: index prvního nalezeného znaku,
        -1 pokud žádný z hledaných znaků není obsažen
    """
    for index in range(len(data)): # pro všechny platné indexy
        if data[index] in znaky: # porovnej znak se vzorem
            return index # nalezena shoda
    return -1 # žádný ze znaků nenalezen

# testovací příklady
if __name__ == "__main__":
    print("--- zarovnání ---")
    print("'", zarovnani("krátký", 15), "'", sep = "")
    print("'", zarovnani("řetězec dostatečně dlouhý", 15), "'", sep = "")
    print("'", zarovnani("012345678901234", 15), "'", sep = "")
    
    print("--- převod délky ---")
    print("2.8 mm =", prevod_delky("2.8 mm"), "m")
    print("0.156 cm =", prevod_delky("0.156 cm"), "m")
    print("34 dm =", prevod_delky("34 dm"), "m")
    print("12.1 m =", prevod_delky("12.1 m"), "m")
    print("6 km =", prevod_delky("6 km"), "m")

    print("--- počet výskytů (bez velikosti písmen) ---")
    print("'ab' v 'abaBAbAB': počet", pocet_bez_velikosti("abaBAbAB", "ab"))
    print("'ab' v 'aba-BAbbbbAB': počet", pocet_bez_velikosti("aba-BAbbbbAB", "ab"))

    print("--- vyhledávání libovolného ze znaků ---")
    print("'abc' v 'po kolena v bahně': index", hledej_znaky("po kolena v bahně", "abc"))
    print("'ABC' v 'po kolena v bahně': index", hledej_znaky("po kolena v bahně", "ABC"))
    print("'abc' v '': index", hledej_znaky("", "abc"))
    print("'' v 'po kolena v bahně': index", hledej_znaky("po kolena v bahně", ""))
