def tabulka(bin = False, oct = False, hex = False):
    """
    tisk ASCII znaků

    Funkce vytiskne tabulku ASCII znaků (rozsah kódů 32 až 127),
    kromě povinných sloupců kód a znak vloží volitelně sloupce
    s kódem v binárním, oktalovém a hexadecimálním tvaru podle
    nastavení parametrů funkce. Tabulka je uvozena hlavičkou.
    """
    # kód znaku
    hlavicka = "{:>3s}".format("#")
    radka = "{0:3d}"
    # volitelné sloupce - aktualizace hlavičky i formátu řádky
    if bin:
        hlavicka = hlavicka + "  {:>9s}".format("bin")
        radka = radka + "  {0:09_b}" # dvě skupiny po 4 + '_'
    if oct:
        hlavicka = hlavicka + "  {:>4s}".format("oct")
        radka = radka + "  {0:04o}"
    if hex:
        hlavicka = hlavicka + "{:>4s}".format("hex")
        radka = radka + "  {0:02x}"
    # tisknutelná podoba znaku
    hlavicka = hlavicka + " {:>.2s}".format("char")
    radka = radka + "  {0:1c}"
    # tisk hlavičky
    print(hlavicka)
    print("-" * len(hlavicka))
    # tisk tabulky
    for cislo in range(32, 128): # tisknutelný ASCII rozsah
        print(radka.format(cislo))

# testovací příklad
tabulka(bin = True, oct = True, hex = True)
tabulka(bin = True, oct = False, hex = False)
