Čísla jsou pro počítače dost užitečná (ostatně slovo počítač to naznačuje), ale Python umí pracovat i s jinými druhy informací. Třeba s textem.
Zkus si to: zadej své jméno do uvozovek, jak vidíš níže:
>>> 'Ola'
'Ola'
Nyní jsi vytvořila svůj první řetězec! Řetězec (angl. string) je programátorský termín pro text – posloupnost znaků (písmenek), které mohou být zpracovány počítačem.
Když řetězec zadáváš, musíš ho vždy uzavřít do uvozovek (apostrofů). Jinak by Python nepoznal, co je text se kterým má pracovat a co jsou instrukce které má provést. To je pro počítač docela důležité – lidem podobné věci dojdou z kontextu, ale počítač je hloupé zařízení.
Řetězce se dají spojovat – „sečítat“ – pomocí +
. Zkus toto:
>>> 'Já jsem ' + 'Ola'
'Já jsem Ola'
Pozor na mezeru! Když zadáš 'Já jsem '+' Ola'
, spojí se ti dvě slova dohromady.
Počítač považuje i mezeru za znak; chová se k ní stejně jako k jakémukoli
písmenku.
Když nedáš mezeru do uvozovek, nebude součástí řetězce.
Zkus si dát do uvozovek i mezeru samotnou:
>>> 'Já jsem' + ' ' + 'Ola'
'Já jsem Ola'
Kromě „sečítání“ můžeš řetězce i opakovat – násobit číslem:
>>> 'Ola' * 3
'OlaOlaOla'
A co když budeš chtít dát dovnitř do svého řetězce apostrof? Můžeš kolem řetězce použít dvojité uvozovky:
>>> "To bych řek', že jsou pořádně praštěný!"
"To bych řek', že jsou pořádně praštěný!"
Pythonu je jedno, se kterým druhem uvozovek řetězec zadáš. Podstatná jsou jen písmenka uvnitř. Když Python řetězec vypisuje, může si vybrat jiný druh uvozovek než jsi použila ty:
>>> "Ola"
'Ola'
Už umíš řetězce „sčítat“ ('Ahoj ' + 'Olo!'
)
a „násobit“ ('la' * 3
).
Na všechny ostatní věci, které se s textem dají dělat,
ale na klávesnici není dost symbolů.
Proto jsou některé operace pojmenované slovně – třeba takzvané funkce.
Chceš-li znát počet písmen ve svém jméně, zavolej funkci len
.
Napiš len
(bez uvozovek), pak kulaté závorky, a do těch závorek
své jméno jako řetězec (v uvozovkách):
>>> len('Ola')
3
Existuje funkce type
, která zjistí jestli je něco číslo nebo řetězec.
Jak bych ji zavolal?
Kromě funkcí existují metody, které se zapisují trochu jinak.
Chceš-li vidět své jméno velkými písmeny, zavolej metodu upper
.
Napiš řetězec, pak tečku, jméno metody upper
(bez uvozovek) a prázdné
závorky:
>>> 'Ola'.upper()
'OLA'
Řetězce mají i metodu lower
. Zkus ji zavolat na své jméno.
Co je metoda (kterou voláš s tečkou, jako 'Ola'.upper()
) a co je funkce
(kde vložíš informaci do závorek jako len('Ola')
),
to si budeš muset u každé nové funkce/metody zapamatovat nebo vyhledat.
Volání funkce nebo metody můžeš použít jako jinou hodnotu.
Nech Python spočítat matematický výraz (1 + 3) / 2
:
>>> (1 + 3) / 2
2.0
Python napřed sečte 1 + 3
a vyjde mu 4.
Čtverku doplní místo 1 + 3
do původního příkladu, a dostane 4 / 2
.
To vydělí a dostane 2.0
.
Neboli: (1 + 3) / 2
= 4 / 2
= 2.0
Zkus se zamyslet, jak Python zpracuje tyto výrazy:
>>> len('Ola') + 1
4
>>> 'Já jsem ' + 'Ola'.upper()
'Já jsem OLA'
>>> len('Ola'.upper())
3
>>> len('Ola' * 3)
9
Podobné skládání je v programování velice časté. Většinu základních stavebních bloků se začátečník naučí za pár týdnů – a pak po celou svou progrmátorskou kariéru objevuje nové způsoby, jak je poskládat do složitějších a složitějších konstrukcí.
OK, dost bylo řetězců. Co ses zatím naučila:
+
a *
se používají na spojování a opakování řetězců.len()
a upper()
provádí na řetězcích
nějaké akce.Čísla, řetězce a operátory a funkce jsou základy většiny programovacích jazyků.
Připravena na něco dalšího? Vsadíme se, že ano!
{ "data": { "sessionMaterial": { "id": "session-material:2019/brno-podzim-snake:intro:2", "title": "Řetězce", "html": "\n \n \n\n <h1>Řetězce</h1>\n<p>Čísla jsou pro počítače dost užitečná (ostatně slovo <em>počítač</em> to naznačuje),\nale Python umí pracovat i s jinými druhy informací.\nTřeba s textem.</p>\n<p>Zkus si to: zadej své jméno do uvozovek, jak vidíš níže:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"s1\">'Ola'</span>\n<span class=\"go\">'Ola'</span>\n</pre></div><p>Nyní jsi vytvořila svůj první <em>řetězec</em>!\nŘetězec (angl. <em>string</em>) je programátorský termín pro <em>text</em> – posloupnost\nznaků (písmenek),\nkteré mohou být zpracovány počítačem.</p>\n<p>Když řetězec zadáváš, musíš ho vždy uzavřít do uvozovek (apostrofů).\nJinak by Python nepoznal, co je text se kterým má pracovat a co jsou instrukce\nkteré má provést.\nTo je pro počítač docela důležité – lidem podobné věci dojdou z kontextu,\nale počítač je hloupé zařízení.</p>\n<p><span class=\"figure\"><a href=\"/2019/brno-podzim-snake/fast-track/str/static/quote-comic.svg\"><img src=\"/2019/brno-podzim-snake/fast-track/str/static/quote-comic.svg\" alt=\"(Ilustrační komiks. Člověk říká robotovi: "Řekni Pavlovi, ať mi zavolá!". Robot odpoví: "PAVLOVI AŤ MI ZAVOLÁ!")\"></a></span></p>\n<p>Řetězce se dají spojovat – „sečítat“ – pomocí <code>+</code>. Zkus toto:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"s1\">'Já jsem '</span> <span class=\"o\">+</span> <span class=\"s1\">'Ola'</span>\n<span class=\"go\">'Já jsem Ola'</span>\n</pre></div><p>Pozor na mezeru! Když zadáš <code>'Já jsem '+' Ola'</code>, spojí se ti dvě slova dohromady.\nPočítač považuje i mezeru za <em>znak</em>; chová se k ní stejně jako k jakémukoli\npísmenku.\nKdyž nedáš mezeru do uvozovek, nebude součástí řetězce.</p>\n<p>Zkus si dát do uvozovek i mezeru samotnou:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"s1\">'Já jsem'</span> <span class=\"o\">+</span> <span class=\"s1\">' '</span> <span class=\"o\">+</span> <span class=\"s1\">'Ola'</span>\n<span class=\"go\">'Já jsem Ola'</span>\n</pre></div><p>Kromě „sečítání“ můžeš řetězce i opakovat – násobit číslem:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"s1\">'Ola'</span> <span class=\"o\">*</span> <span class=\"mi\">3</span>\n<span class=\"go\">'OlaOlaOla'</span>\n</pre></div><h2>Uvozování</h2>\n<p>A co když budeš chtít dát dovnitř do svého řetězce apostrof?\nMůžeš kolem řetězce použít dvojité uvozovky:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"s2\">"To bych řek', že jsou pořádně praštěný!"</span>\n<span class=\"go\">"To bych řek', že jsou pořádně praštěný!"</span>\n</pre></div><p>Pythonu je jedno, se kterým druhem uvozovek řetězec zadáš.\nPodstatná jsou jen písmenka uvnitř.\nKdyž Python řetězec vypisuje, může si vybrat jiný druh uvozovek\nnež jsi použila ty:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"s2\">"Ola"</span>\n<span class=\"go\">'Ola'</span>\n</pre></div><h2>Funkce a metody</h2>\n<p>Už umíš řetězce „sčítat“ (<code>'Ahoj ' + 'Olo!'</code>)\na „násobit“ (<code>'la' * 3</code>).\nNa všechny ostatní věci, které se s textem dají dělat,\nale na klávesnici není dost symbolů.\nProto jsou některé operace pojmenované slovně – třeba takzvané <em>funkce</em>.</p>\n<p>Chceš-li znát počet písmen ve svém jméně, zavolej funkci <code>len</code>.\nNapiš <code>len</code> (bez uvozovek), pak kulaté závorky, a do těch závorek\nsvé jméno jako řetězec (v uvozovkách):</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"s1\">'Ola'</span><span class=\"p\">)</span>\n<span class=\"go\">3</span>\n</pre></div><p>Existuje funkce <code>type</code>, která zjistí jestli je něco číslo nebo řetězec.\nJak bych ji zavolal?</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/str/index/solutions/0/\"><span class=\"link-text\">Ukázat řešení</span></a>\n </div>\n <div class=\"solution-body\" aria-hidden=\"true\">\n <div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"nb\">type</span><span class=\"p\">(</span><span class=\"mi\">123</span><span class=\"p\">)</span>\n<span class=\"go\"><class 'int'></span>\n<span class=\"gp\">>>> </span><span class=\"nb\">type</span><span class=\"p\">(</span><span class=\"s1\">'123'</span><span class=\"p\">)</span>\n<span class=\"go\"><class 'str'></span>\n</pre></div>\n </div>\n</div><p>Kromě funkcí existují <em>metody</em>, které se zapisují trochu jinak.</p>\n<p>Chceš-li vidět své jméno velkými písmeny, zavolej metodu <code>upper</code>.\nNapiš řetězec, pak tečku, jméno metody <code>upper</code> (bez uvozovek) a prázdné\nzávorky:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"s1\">'Ola'</span><span class=\"o\">.</span><span class=\"n\">upper</span><span class=\"p\">()</span>\n<span class=\"go\">'OLA'</span>\n</pre></div><p>Řetězce mají i metodu <code>lower</code>. Zkus ji zavolat na své jméno.</p>\n<div class=\"solution\" id=\"solution-1\">\n <h3>Řešení</h3>\n <div class=\"solution-cover\">\n <a href=\"/2019/brno-podzim-snake/fast-track/str/index/solutions/1/\"><span class=\"link-text\">Ukázat řešení</span></a>\n </div>\n <div class=\"solution-body\" aria-hidden=\"true\">\n <div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"s1\">'Ola'</span><span class=\"o\">.</span><span class=\"n\">lower</span><span class=\"p\">()</span>\n<span class=\"go\">'ola'</span>\n</pre></div>\n </div>\n</div><p>Co je metoda (kterou voláš s tečkou, jako <code>'Ola'.upper()</code>) a co je funkce\n(kde vložíš informaci do závorek jako <code>len('Ola')</code>),\nto si budeš muset u každé nové funkce/metody zapamatovat nebo vyhledat.</p>\n<h2>Skládání výrazů</h2>\n<p>Volání funkce nebo metody můžeš použít jako jinou hodnotu.</p>\n<p>Nech Python spočítat matematický výraz <code>(1 + 3) / 2</code>:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"p\">(</span><span class=\"mi\">1</span> <span class=\"o\">+</span> <span class=\"mi\">3</span><span class=\"p\">)</span> <span class=\"o\">/</span> <span class=\"mi\">2</span>\n<span class=\"go\">2.0</span>\n</pre></div><p>Python napřed sečte <code>1 + 3</code> a vyjde mu 4.\nČtverku doplní místo <code>1 + 3</code> do původního příkladu, a dostane <code>4 / 2</code>.\nTo vydělí a dostane <code>2.0</code>.</p>\n<p>Neboli: <code>(1 + 3) / 2</code> = <code>4 / 2</code> = <code>2.0</code></p>\n<p>Zkus se zamyslet, jak Python zpracuje tyto výrazy:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"s1\">'Ola'</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"mi\">1</span>\n<span class=\"go\">4</span>\n</pre></div><div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"s1\">'Já jsem '</span> <span class=\"o\">+</span> <span class=\"s1\">'Ola'</span><span class=\"o\">.</span><span class=\"n\">upper</span><span class=\"p\">()</span>\n<span class=\"go\">'Já jsem OLA'</span>\n</pre></div><div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"s1\">'Ola'</span><span class=\"o\">.</span><span class=\"n\">upper</span><span class=\"p\">())</span>\n<span class=\"go\">3</span>\n</pre></div><div class=\"highlight\"><pre><span></span><span class=\"gp\">>>> </span><span class=\"nb\">len</span><span class=\"p\">(</span><span class=\"s1\">'Ola'</span> <span class=\"o\">*</span> <span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"go\">9</span>\n</pre></div><div class=\"solution\" id=\"solution-2\">\n <h3>Řešení</h3>\n <div class=\"solution-cover\">\n <a href=\"/2019/brno-podzim-snake/fast-track/str/index/solutions/2/\"><span class=\"link-text\">Ukázat řešení</span></a>\n </div>\n <div class=\"solution-body\" aria-hidden=\"true\">\n <p><code>'Já jsem ' + 'Ola'.upper()</code> → <code>'Já jsem ' + 'OLA'</code> → <code>'Já jsem OLA'</code></p>\n<p><code>len('Ola') + 1</code> → <code>3 + 1</code> → <code>4</code></p>\n<p><code>len('Ola'.upper())</code> → <code>len('OLA')</code> → <code>3</code></p>\n<p><code>len('Ola' * 3)</code> → <code>len('OlaOlaOla')</code> → <code>9</code></p>\n </div>\n</div><p>Podobné skládání je v programování velice časté.\nVětšinu základních stavebních bloků se začátečník naučí za pár\ntýdnů – a pak po celou svou progrmátorskou kariéru objevuje nové způsoby,\njak je poskládat do složitějších a složitějších konstrukcí.</p>\n<h3>Shrnutí</h3>\n<p>OK, dost bylo řetězců. Co ses zatím naučila:</p>\n<ul>\n<li><strong>Řetězce</strong> se používají na práci s textem.</li>\n<li><strong>Operátory</strong> <code>+</code> a <code>*</code> se používají na spojování a opakování řetězců.</li>\n<li><strong>Funkce</strong> a <strong>metody</strong> jako <code>len()</code> a <code>upper()</code> provádí na řetězcích\nnějaké akce.</li>\n<li><strong>Výrazy</strong> se dají skládat dohromady.</li>\n</ul>\n<p>Čísla, řetězce a operátory a funkce jsou základy většiny programovacích jazyků.</p>\n<p>Připravena na něco dalšího? Vsadíme se, že ano!</p>\n\n\n " } } }