Úvod
Python je programovací jazyk, který se často používá pro účely systémové integrace. Tento jazyk využívá něco, čemu se říká ‘datové typy’. Tyto datové typy pomáhají klasifikovat nebo definovat daný typ dat. To znamená, že konkrétní datový typ se vztahuje ke specifickým hodnotám a operacím, které na něj můžete použít. Každý datový typ se programuje a upravuje jiným způsobem. Je to proto, že každý datový typ má jinou povahu. Můžete se například setkat s řetězci nebo celými čísly.
Cílem této příručky je pomoci vám seznámit se s různými datovými typy v Pythonu. Kromě toho budeme také podrobně diskutovat o tom, jak převádět datové typy mezi sebou. Na konci tohoto návodu byste měli znát datové typy, jako jsou čísla, řetězce, n-tice a seznamy, a vědět, jak je převádět.
Převod čísel
Když mluvíme o číslech v Pythonu, můžeme mít na mysli jednu ze dvou možností. Může se jednat buď o celá čísla nebo čísla s plovoucí desetinnou čárkou. Někdy může být potřeba převést jedno na druhé. Celá čísla můžete snadno převést na čísla s plovoucí desetinnou čárkou a čísla s plovoucí desetinnou čárkou na celá čísla.
-
Převod: Celá čísla na čísla s plovoucí desetinnou čárkou
Nejprve začneme tím, že prozkoumáme, jak můžete převést celá čísla na čísla s plovoucí desetinnou čárkou. Prostředkem k tomu je příkaz s názvem float(). Tato funkce převede jakékoli zadané celé číslo na číslo s plovoucí desetinnou čárkou. Stačí pouze umístit celé číslo do závorek. Řekněme například, že chcete převést celé číslo 57 na datový typ float. Zde je návod, jak byste při převodu postupovali:
|
1 |
float(57) |
V důsledku spuštění tohoto příkazu se celé číslo 57 změní na číslo s plovoucí desetinnou čárkou 57.0.
Dalším způsobem, jak toho dosáhnout, by bylo použití proměnné. Své celé číslo můžete označit pomocí proměnné a poté vytisknout číslo s plovoucí desetinnou čárkou pomocí výše uvedeného příkazu. Řekněme, že deklarujete proměnnou f jako rovnou 57. Zde je návod, jak by převod probíhal v tomto případě:
|
1 2 3 |
f = 57 print(float(f)) |
|
1 2 3 |
Výstup 57.0 |
-
Převod: Čísla s plovoucí desetinnou čárkou na celá čísla
Je také možné převést čísla s plovoucí desetinnou čárkou na celá čísla. Podobně jako u předchozího příkazu lze tento převod provést pomocí funkce int(). Stejně jako minule stačí přidat číslo s plovoucí desetinnou čárkou do závorek za funkcí.
In our example, we will be converting the float 390 na celé číslo. Chcete-li provést převod, spustili bychom následující příkaz:
|
1 |
int(390.8) |
V důsledku spuštění této funkce se 390 změní na svou podobu float: 390.8.
Stejně tak můžete převod provést pomocí proměnných. Nejen to, ale můžete provést i více převodů najednou. Předpokládejme, že b se rovná 125.0 a c se rovná 390.8. Zde je návod, jak byste tyto hodnoty s plovoucí desetinnou čárkou vytiskli:
|
1 2 3 4 5 |
b = 125.0 c = 390.8 print(int(b)) print(int(c)) |
|
1 2 3 4 |
Výstup 125 390 |
Jak vidíte, celá čísla se úspěšně změnila na čísla s plovoucí desetinnou čárkou.
Jednou z důležitých věcí, které je třeba mít na paměti při převodu čísla s plovoucí desetinnou čárkou na celé číslo, je, že funkce hodnoty nezaokrouhluje. To znamená, že desetinná část čísla s plovoucí desetinnou čárkou se jednoduše odstraní. Funkce nezaokrouhlí hodnotu jako 390.8 na 390 – jednoduše odstraní část 0.8, aby vám poskytla celé číslo.
-
Převod: Dělením
Celá čísla na čísla s plovoucí desetinnou čárkou můžete převést také dělením. Vzájemné dělení celých čísel vám může poskytnout podíl, který je číslem s plovoucí desetinnou čárkou. Například při dělení 5 dvěma bude výsledkem 2.5, což je float. Podívejte se:
|
1 2 |
a = 5 / 2 print(a) |
|
1 2 3 |
Výstup 2.5 |
Toto je speciální funkce Pythonu 3. V Pythonu 2 by vám provedení takového dělení poskytlo jako odpověď pouze celé číslo, například takto: 5 / 2 = 2.
Převod s řetězci
Než začneme mluvit o tom, jak provést převod s řetězci, musíte vědět, co to řetězce vlastně jsou. Pokud to ještě nevíte, řetězce jsou posloupnosti znaků. Může se jednat o řetězec písmen, čísel, symbolů nebo jakýchkoli jiných znaků. Možná znáte řetězce v souvislosti s počítačovými daty. Je to proto, že počítače tento datový typ často používají k provádění svých operací.
Pokud pracujete s daty generovanými uživateli, budete muset tyto převody provádět často. Proto je užitečné vědět, jak převést čísla na řetězce a řetězce na čísla.
-
Převod: Čísla na řetězce
Můžeš použít str() funkci k převodu čísel na řetězce. Stejně jako předtím, hodnotu, kterou chcete převést, umístíte do závorky. Tato hodnota může být buď číslo, nebo proměnná. Pro začátek se podívejme, jak byste převedli celé číslo, například 12, na hodnotu řetězce:
|
1 |
str(12) |
|
1 2 3 |
Výstup '12' |
Jak vidíte, výstup zobrazuje hodnotu řetězce. Hodnota řetězce je označena uvozovkami.
Na druhou stranu můžete do funkce místo celých čísel vložit také proměnné. V tom je tato funkce opravdu užitečná. Představte si například, že chcete sledovat a hlásit, kolik řádků kódu uživatel napíše v daném časovém úseku. Chcete-li tyto informace uživateli zobrazit, musíte vypsat jak řetězec, tak celočíselné hodnoty, a to takto:
|
1 2 3 4 |
user = "Sammy" lines = 50 print("Gratulujeme, " + user + "! Právě jste napsal " + lines + " řádků kódu.") |
Bohužel, pokud se pokusíte spustit výše uvedený kód, zobrazí se vám chyba jako tato:

To znamená, že musíte převést proměnnou lines na hodnotu řetězce, abyste mohli kód spustit.
|
1 2 3 4 |
user = "Sammy" lines = 50 print("Gratulujeme, " + user + "! Právě jste napsal " + str(lines) + " řádků kódu.") |
Nyní, když jste umístili převodní funkci, budete moci příkaz úspěšně spustit. Jako výstup uvidíte něco podobného tomuto:
|
1 2 3 |
Výstup Gratulujeme, Sammy! Právě jste napsal 50 řádků of kódu. |
Podobně, pokud chcete k řetězci přidat desetinné číslo (float) místo celého čísla, musíte udělat totéž. Stejně jako předtím můžete hodnotu buď přidat přímo, nebo použít proměnnou. Například:
|
1 2 3 |
print(str(421.034)) f = 5524.53 print(str(f)) |
|
1 2 3 4 |
Výstup 421.034 5524.53 |
Pokud se chcete ujistit, že je hodnota správná, můžete ji spojit s řetězcem takto:
|
1 2 |
f = 5524.53 print("Sammy má " + str(f) + " bodů.") |
|
1 2 3 |
Output Sammy má 5524.53 bodů. |
Vzhledem k tomu, že jste neobdrželi žádnou chybu, znamená to, že převod byl úspěšný.
-
Převod: Řetězce na čísla
Podobně můžete převádět i řetězce na čísla. Pokud váš řetězec nemá žádná desetinná místa, je lepší jej převést na celé číslo. Na celé číslo jej můžete převést pomocí int() funkce.
Budeme i nadále používat náš předchozí příklad s převodem na celé číslo. Představte si tedy, že uživatel jménem Sammy chce denně sledovat svůj pokrok v psaní kódu. Jako programátor chcete tyto informace uživateli prezentovat kreativním způsobem. Protože jsou však tyto hodnoty uloženy jako řetězce, nemůžete na ně použít některé základní operátory, jako je – (odčítání). Můžete to vidět v následujícím příkladu:
|
1 2 3 4 5 6 |
lines_yesterday = "50" lines_today = "108" lines_more = lines_today - lines_yesterday print(lines_more) |

Jak vidíte, operátor na řetězcové hodnoty nefunguje. Místo toho se zobrazí chyba. Abyste mohli s hodnotami pracovat, musíte řetězce převést na celá čísla pomocí int() funkce:
|
1 2 3 4 5 6 |
lines_yesterday = "50" lines_today = "108" lines_more = int(lines_today) - int(lines_yesterday) print(lines_more) |
|
1 2 3 |
Výstup 58 |
Zde je lines_more proměnná. Tato proměnná je celé číslo a rovná se výsledné hodnotě, která je v našem příkladu 58.
Na druhou stranu můžete řetězce převést na desetinná čísla (floats) pomocí funkce float() pokud jsou přítomna desetinná místa. V tomto příkladu použijeme body, které uživatel Sammy získává, na rozdíl od počtu řádků, které píše. Body se počítají jako desetinná čísla:
|
1 2 3 4 5 6 |
total_points = "5524.53" new_points = "45.30" new_total_points = total_points + new_points print(new_total_points) |
|
1 2 3 |
Výstup 5524.5345.30 |
Ačkoliv výstup nevykazuje chybu, stále není správný. Operátor + neboli sčítání v tomto případě fungoval. Ale namísto sečtení dvou čísel jednoduše umístil dvě řetězcové hodnoty vedle sebe.
Proto musíte tyto řetězce nejprve převést na hodnoty typu float pomocí funkce float() funkce:
|
1 2 3 4 5 6 |
total_points = "5524.53" new_points = "45.30" new_total_points = float(total_points) + float(new_points) print(new_total_points) |
|
1 2 3 |
Výstup 5569.83 |
Jak můžete vidět výše, obě hodnoty se sečetly. Pamatujte: pokud se pokusíte převést řetězcovou hodnotu s desetinnými místy na celé číslo, dostanete následující chybu:
|
1 2 |
f = "54.23" print(int(f)) |

Proto musíte nejprve převést datový typ řetězce na čísla. Poté můžete snadno provádět další operace a převádět číselné hodnoty.
Převod na n-tice (tuples) a seznamy (lists)
Seznamy (lists) a n-tice (tuples) jsou některé další datové typy, které můžete v Pythonu 3 použít. Oba se skládají ze sekvence prvků. Rozdíl mezi nimi je v tom, že zatímco seznam je měnitelný (mutable), n-tice je neměnná (immutable). Navíc, zatímco prvky seznamu jsou umístěny v hranatých závorkách [ ], prvky n-tice se uvádějí v kulatých závorkách ( ).
-
Převod: Seznamy na n-tice
Nejprve se podívejme na to, jak můžete převést seznam na n-tici. Tento převod můžete potřebovat, pokud vyžadujete neměnný datový typ. K tomuto účelu budete muset použít funkci tuple():
|
1 |
print(tuple(['pull request', 'open source', 'repository', 'branch'])) |
|
1 2 3 |
Výstup ('pull request', 'open source', 'repository', 'branch') |
Jak vidíte, položky seznamu jsou nyní v n-tici. To je znázorněno kulatými závorkami, které prvky obklopují.
Můžete také použít funkci tuple() s proměnnou, která odpovídá seznamu položek:
|
1 2 3 |
sea_creatures = ['shark', 'cuttlefish', 'squid', 'mantis shrimp'] print(tuple(sea_creatures)) |
|
1 2 3 |
Výstup ('shark', 'cuttlefish', 'squid', 'mantis shrimp') |
Jakýkoli datový typ můžete pohodlně převést na n-tici. Zde je například návod, jak převést řetězec na n-tici:
|
1 |
print(tuple('Sammy')) |
|
1 2 3 |
Výstup ('S', 'a', 'm', 'm', 'y') |
Řetězce lze převést na n-tice, protože jsou iterovatelné. Pochopitelně neiterovatelné datové typy na n-tice převést nelze. Řekněme, že chcete převést nějaká celá čísla nebo desetinné číslo na n-tici. Pokud byste spustili funkci tuple(), obdržíte chybu jako:
|
1 |
print(tuple(5000)) |
|
1 2 3 |
Výstup TypeError: 'int' object is not iterable |
Typová chyba (TypeError) ukazuje, že celé číslo není iterovatelné. Proto k převodu nemůže dojít. Složitým způsobem by bylo nejprve převést celé číslo na řetězec a poté na n-tici. To byste mohli provést pomocí následující funkce: tuple(str(5000)). Doporučujeme se však takovým komplikacím vyhnout.
-
Převod: N-tice na seznamy
Naopak, pokud potřebujete měnitelná data, možná budete muset převést n-tici na seznam. K tomuto účelu použijete funkci list() následovně:
|
1 |
print(list(('blue coral', 'staghorn coral', 'pillar coral'))) |
|
1 2 3 |
Výstup ['blue coral', 'staghorn coral', 'pillar coral'] |
Přítomnost hranatých závorek značí, že výsledný výstup je n-tice. Při psaní kódu pro převod n-tice na seznam pomocí list(), musíte se ujistit, že jste zahrnuli závorky jak pro metodu list(), tak pro metodu print(). To však činí kód poněkud nečitelným. Chcete-li jej zjednodušit, můžete jeden pár závorek odstranit použitím proměnné:
|
1 2 3 |
coral = ('blue coral', 'staghorn coral', 'pillar coral') list(coral) |
Podobně jako n-tice můžete na seznamy přímo převádět i řetězce:
|
1 |
print(list('shark')) |
|
1 2 3 |
Výstup ['s', 'h', 'a', 'r', 'k'] |
Závěr
Tento návod vám pomůže, pokud hledáte způsoby, jak převádět datové typy v Pythonu 3. Podrobně jsme probrali různé datové typy a to, jak je lze vzájemně převádět pomocí vestavěných funkcí Pythonu. Znalost těchto převodů vám výrazně usnadní a zpřesní programování.
Chcete-li dále prozkoumat, co všechno můžete s Pythonem dělat, podívejte se na naše další návody:
- Podívejte se na jak nainstalovat Python 3 a nastavit lokální programovací prostředí na Ubuntu 16.04.
- Sledujte náš návod a naučte se, jak extrahovat data z Twitteru pomocí Pythonu.
- Naučte se, jak získávat data z NASDAQ po minutách pomocí Pythonu.
- Můžete se také podívat na jak využít Python skript CloudSigma k automatizaci převodu snímku disku na plnohodnotný disk na naší platformě.
Příjemné programování!
Komentáře
Zatím žádné komentáře. Buďte první.