Stewdent.eu
▾

Konverzia typov

Konverzia typov (type conversion) je proces zmeny hodnoty z jedného dátového typu na iný. Môže byť automatická (implicitná) alebo vyžiadaná programátorom (explicitná).

Posledná aktualizácia: 10. decembra 2025

★★☆☆☆ Stupeň 2computingprogrammingkonverziatypycasting4 min čítania

Nahlásiť chybu

V programoch sa neustále pracuje s rôznymi typmi dát — číslami, textom, pravdivostnými hodnotami. Niekedy tieto typy treba zmeniť jeden na druhý. Tomuto procesu sa hovorí konverzia typov (alebo type casting).

Explicitná konverzia

Explicitná konverzia znamená, že programátor sám požiada Python o zmenu typu pomocou vstavaných funkcií:

# Reťazec na celé číslo
vek_text = "16"
vek = int(vek_text)        # 16 (int)

# Reťazec na desatinné číslo
vyska_text = "170.5"
vyska = float(vyska_text)  # 170.5 (float)

# Číslo na reťazec
skore = 95
skore_text = str(skore)    # "95" (str)

# Číslo na booleovskú hodnotu
print(bool(0))              # False
print(bool(7))              # True
print(bool(-1))             # True

Prečo je konverzia potrebná?

Funkcia input() vždy vracia reťazec, aj keď používateľ zadá číslo:

vstup = input("Koľko jabĺk máš? ")   # vráti reťazec, napr. "5"
# jabĺk + 3 = CHYBA — nemôžeš sčítať reťazec a číslo

jablka = int(vstup)          # teraz je to číslo
print(jablka + 3)            # 8 — funguje správne

Skrátene v jednom riadku:

jablka = int(input("Koľko jabĺk máš? "))
Poznámka

Konverzia typov z vstupu je jedna z najčastejšie potrebných operácií. Skoro pri každom programe, ktorý pýta číslo od používateľa, potrebuješ int() alebo float().

Implicitná konverzia

Python niekedy konvertuje typy automaticky, bez zásahu programátora:

vysledok = 5 + 2.0   # int + float → float
print(vysledok)       # 7.0
print(type(vysledok)) # <class 'float'>

Python "povýšil" celé číslo na desatinné, aby sa predišlo strate presnosti.

Tip

Implicitná konverzia funguje len v "bezpečných" prípadoch — keď nie je riziko straty informácie. Python automaticky konvertuje int na float, ale nikdy napríklad str na int.

Nebezpečné konverzie

Nie každá konverzia je možná:

int("ahoj")       # ValueError — "ahoj" nie je číslo
int("3.14")       # ValueError — reťazec s desatinnou čiarkou
int(3.99)         # 3 — možné, ale ODSEKNE desatinnú časť (nezaokrúhľuje!)
float("3,14")     # ValueError — Python čaká bodku, nie čiarku
Upozornenie

int(3.99) vráti 3, nie 4! Python jednoducho odstrihne desatinnú časť. Ak chceš zaokrúhliť, použi round(3.99), čo vráti 4.

Bezpečná konverzia s ošetrením chýb

Čo ak používateľ zadá text namiesto čísla? Program by spadol. Môžeš to ošetriť:

vstup = input("Zadaj číslo: ")

try:
    cislo = int(vstup)
    print(f"Zadal si číslo: {cislo}")
except ValueError:
    print("Toto nie je platné celé číslo!")

Konverzia medzi kolekciami

tuple_data = (1, 2, 3)
list_data = list(tuple_data)      # n-tica na zoznam
back_to_tuple = tuple(list_data)  # zoznam na n-ticu

retazec = "ahoj"
znaky = list(retazec)             # ['a', 'h', 'o', 'j']
print(znaky)

cisla_set = {3, 1, 4, 1, 5}      # množina — bez duplikátov
print(list(cisla_set))            # [1, 3, 4, 5] (bez duplikátov, nezoradené)

Prehľadná tabuľka konverzií

FunkciaVstupVýstupPoznámka
int("42")"42"42Funguje
int(3.9)3.93Odsekne desatinnú časť
float("3.14")"3.14"3.14Funguje
str(100)100"100"Vždy funguje
bool(0)0FalseNula = nepravda
int("abc")"abc"ChybaValueError

Cvičné príklady

Čo vypíše tento kód a prečo? a = '5'; b = '3'; print(a + b)

Zobraziť odpoveď
Vypíše '53'. Oba sú reťazce, takže + je konkatenácia (spájanie textu), nie sčítanie. Výsledok je reťazec '53', nie číslo 8. Na sčítanie treba: int(a) + int(b).

Napíš program, ktorý prečíta dve čísla od používateľa a vypíše ich súčet. Ošetri prípad, keď používateľ nezadá číslo.

Zobraziť odpoveď
try: a = float(input('Prvé číslo: ')); b = float(input('Druhé číslo: ')); print(f'Súčet: {a + b}'); except ValueError: print('Zadal si neplatný vstup — zadaj prosím číslo.')