Pojď zkusit něco nového: zjistit délku čísla stejným způsobem,
jakým jsme zjišťovali délku našeho jména.
Zadej len(304023)
a stiskni Enter:
>>> len(304023)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()
Zobrazila se ti naše první chyba!
Ta říká, že objekty typu int
(zkratka anglického integer, celé číslo)
nemají délku.
Tak co můžeme udělat teď?
Možná můžeme zkusit napsat naše číslo jako řetězec?
Řetězce mají délku, že?
>>> len("304023")
6
Existuje i funkce, která převede číslo na řetězec. Jmenuje se str
:
>>> str(304023)
"304023"
>>> len(str(304023))
6
Podobně funkce int
převádí věci na celá čísla:
>>> int("304023")
Můžeš převést čísla na text, ale nemůžeš jen tak převést text na čísla. Co by se stalo, kdyby ses pokusila na číslo převést řetězec, ve kterém nejsou číslice?
{ "data": { "sessionMaterial": { "id": "session-material:2019/brno-podzim-snake:intro:3", "title": "Převádění typů", "html": "\n \n \n\n <h1>Převádění typů</h1>\n<p>Pojď zkusit něco nového: zjistit délku čísla stejným způsobem,\njakým jsme zjišťovali délku našeho jména.\nZadej <code>len(304023)</code> a stiskni <kbd>Enter</kbd>:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"mi\">304023</span><span class=\"p\">)</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n File <span class=\"nb\">"<stdin>"</span>, line <span class=\"m\">1</span>, in <span class=\"n\"><module></span>\n<span class=\"gr\">TypeError</span>: <span class=\"n\">object of type 'int' has no len()</span>\n</pre></div><p>Zobrazila se ti naše první chyba!\nTa říká, že objekty typu <code>int</code> (zkratka anglického <em>integer</em>, celé číslo)\nnemají délku.\nTak co můžeme udělat teď?\nMožná můžeme zkusit napsat naše číslo jako řetězec?\nŘetězce mají délku, že?</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"s2\">"304023"</span><span class=\"p\">)</span>\n<span class=\"go\">6</span>\n</pre></div><p>Existuje i funkce, která <em>převede</em> číslo na řetězec. Jmenuje se <code>str</code>:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"nb\">str</span><span class=\"p\">(</span><span class=\"mi\">304023</span><span class=\"p\">)</span>\n<span class=\"go\">"304023"</span>\n<span class=\"gp\">>>> </span><span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"nb\">str</span><span class=\"p\">(</span><span class=\"mi\">304023</span><span class=\"p\">))</span>\n<span class=\"go\">6</span>\n</pre></div><p>Podobně funkce <code>int</code> převádí věci na celá čísla:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"nb\">int</span><span class=\"p\">(</span><span class=\"s2\">"304023"</span><span class=\"p\">)</span>\n</pre></div><p>Můžeš převést čísla na text, ale nemůžeš jen tak převést text na čísla.\nCo by se stalo, kdyby ses pokusila na číslo převést řetězec, ve kterém\nnejsou číslice?</p>\n<div class=\"solution\" id=\"solution-0\">\n <h3>Řešení</h3>\n <div class=\"solution-cover\">\n <a href=\"/2019/brno-podzim-snake/fast-track/conversion/index/solutions/0/\"><span class=\"link-text\">Ukázat řešení</span></a>\n </div>\n <div class=\"solution-body\" aria-hidden=\"true\">\n <p>Nastane chyba!</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"nb\">int</span><span class=\"p\">(</span><span class=\"s1\">'hello'</span><span class=\"p\">)</span>\n<span class=\"gt\">Traceback (most recent call last):</span>\n File <span class=\"nb\">"<stdin>"</span>, line <span class=\"m\">1</span>, in <span class=\"n\"><module></span>\n<span class=\"gr\">ValueError</span>: <span class=\"n\">invalid literal for int() with base 10: 'ahoj'</span>\n</pre></div>\n </div>\n</div>\n\n\n " } } }