Vytvoř v editoru nový soubor, ulož ho do adresáře pro dnešní lekci
pod jménem printing.py
a napiš do něj následující příkazy:
print(1)
print(1, 2, 3)
print(1 + 1)
print(3 * 8)
print(10 - 2.2)
print(3 + (4 + 6) * 8 / 2 - 1)
print('*' * 80)
print("Ahoj" + " " + "PyLadies!")
print("Součet čísel 3 a 8 je", 3 + 8)
print('Máma má mísu')
print(V míse je maso.)
Program spusť:
(venv)
,
aktivuj si virtuální prostředí,cd
donaviguj do adresáře s programem,python printing.py
.Funguje? Napoprvé asi ne.
Často zjistíš, že program, který napíšeš, nebude fungovat hned napoprvé. Počítač je hloupý stroj; pokud instrukce nenapíšeš přesně podle pravidel jazyka Python, neumí si domyslet, co po něm chceš. Ale nevěš hlavu, stává se to všem programátorům. Důležité je vědět, jak chybu najít. A k tomu ti pomůžou chybové výpisy. Třeba program výše vypíše po spuštění následující chybu:
File "~/pyladies/02/printing.py", line 11 print(V míse je maso.) ^ SyntaxError: invalid syntax
Při chybě Python napřed vypíše jméno souboru a číslo řádku, na kterém chyba je. Potom vypíše celý řádek s chybou a nakonec oznámí druh chyby (v tomto případě je to „syntaktická chyba“) a případně nějaké bližší upřesnění.
Pro zvídavé
Jak se od téhle chyby liší ta, která nastane, když zkusíš sečíst číslo a řetězec? Nebo když zkusíš dělit nulou?
Chybové hlášky můžou být ze začátku těžko pochopitelné, zvyknout se na ně dá asi jenom praxí. Pro tebe bude ze začátku důležité hlavně ono číslo řádku. Když víš, že chyba je na řádku 11, můžeš se podívat na tento řádek a zkusit chybu najít.
Když chyba není na daném řádku, může být ještě o pár řádků výš nebo níž: Python občas nesdílí lidské představy o tom, kde přesně chyba je, a ukáže jen, kde si jí sám všimnul.
V našem případě je chyba v tom, že kolem řetězce nejsou uvozovky. Přidej je a program znovu spusť. Jestli funguje, gratuluji! Jinak chybu opět oprav a opakuj, dokud to nebude fungovat :)
Teď, když program běží, se můžeme podívat, co se při jeho spuštění vlastně děje. Je to zatím docela jednoduché: příkazy se provádějí jeden po druhém, odshora dolů. Program je jako recept na vaření: seznam instrukcí, které říkají co je potřeba udělat.
Zanedlouho budou tvoje programy připomínat spíš recepty na čarodějné lektvary (počkej do úplňku a pokud je Mars v konjunkci s Jupiterem, třikrát zamíchej), ale základní myšlenka je stále stejná: počítač čte odshora dolů a provádí příkazy jeden po druhém.
A z jakých že instrukcí se náš „recept“ skládá?
Ten print
, který tu celou dobu používáš, je funkce.
O funkcích se ještě budeme bavit později,
teď stačí vědět, že když napíšeš print
a za to do závorky několik výrazů (angl. expressions)
oddělených čárkou, hodnoty těchto výrazů se vypíšou.
A co že je ten výraz?
V našem programu máš několik příkladů:
výraz je číslo, řetězec nebo nějaká (třeba matematická) operace
složená z více výrazů.
Třeba výraz 3 + 8
sečítá výrazy 3
a 8
.
V sekci o proměnných se na výrazy a jejich hodnoty podíváme podrobněji.
Typografická vsuvka
Všimni si stylu zápisu: jako v češtině se po otvírací závorce a za
ozavírací závorkou nepíše mezera; na rozdíl od češtiny ale mezera není
mezi print
a závorkou.
print("Ahoj!")
S čárkou je to jako v češtině: mezeru píšeme po čárce, ale ne před ní:
print(1, 2, 3)
Kolem operátorů jako +
a *
se obyčejně píše jedna mezera zleva a
jedna zprava. Někdy je ale přehlednější obě vynechat:
print(2 + 8)
print("Jedna a půl je", 1 + 1/2)
{ "data": { "sessionMaterial": { "id": "session-material:2019/plzen-podzim-2019:hello:0", "title": "Print a chybové hlášky", "html": "\n \n \n\n <h1>Print a chybové hlášky</h1>\n<p>Vytvoř v editoru nový soubor, ulož ho do adresáře pro dnešní lekci\npod jménem <code>printing.py</code> a napiš do něj následující příkazy:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"k\">print</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">)</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"mi\">1</span> <span class=\"o\">+</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"mi\">3</span> <span class=\"o\">*</span> <span class=\"mi\">8</span><span class=\"p\">)</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"mi\">10</span> <span class=\"o\">-</span> <span class=\"mf\">2.2</span><span class=\"p\">)</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"mi\">3</span> <span class=\"o\">+</span> <span class=\"p\">(</span><span class=\"mi\">4</span> <span class=\"o\">+</span> <span class=\"mi\">6</span><span class=\"p\">)</span> <span class=\"o\">*</span> <span class=\"mi\">8</span> <span class=\"o\">/</span> <span class=\"mi\">2</span> <span class=\"o\">-</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s1\">'*'</span> <span class=\"o\">*</span> <span class=\"mi\">80</span><span class=\"p\">)</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s2\">"Ahoj"</span> <span class=\"o\">+</span> <span class=\"s2\">" "</span> <span class=\"o\">+</span> <span class=\"s2\">"PyLadies!"</span><span class=\"p\">)</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s2\">"Součet čísel 3 a 8 je"</span><span class=\"p\">,</span> <span class=\"mi\">3</span> <span class=\"o\">+</span> <span class=\"mi\">8</span><span class=\"p\">)</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s1\">'Máma má mísu'</span><span class=\"p\">)</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"n\">V</span> <span class=\"n\">míse</span> <span class=\"n\">je</span> <span class=\"n\">maso</span><span class=\"o\">.</span><span class=\"p\">)</span>\n</pre></div><p>Program spusť:</p>\n<ul>\n<li>pokud ti už na začátku příkazové řádky nesvítí <code>(venv)</code>,\naktivuj si virtuální prostředí,</li>\n<li>pomocí <code>cd</code> donaviguj do adresáře s programem,</li>\n<li>zadej <code>python printing.py</code>.</li>\n</ul>\n<p>Funguje? Napoprvé asi ne.</p>\n<h2>Jak číst chyby</h2>\n<p>Často zjistíš, že program, který napíšeš, nebude fungovat hned napoprvé.\nPočítač je hloupý stroj; pokud instrukce nenapíšeš přesně podle pravidel jazyka\nPython, neumí si domyslet, co po něm chceš.\nAle nevěš hlavu, stává se to všem programátorům.\nDůležité je vědět, jak chybu najít.\nA k tomu ti pomůžou chybové výpisy.\nTřeba program výše vypíše po spuštění následující chybu:</p>\n<pre> File "<span class=\"plhome\">~/pyladies</span>/02/printing.py", line <span class=\"err-lineno\">11</span>\n print(V míse je maso.)\n ^\n<span class=\"err-exctype\">SyntaxError</span>: invalid syntax\n</pre><p>Při chybě Python napřed vypíše\njméno souboru a <span class=\"err-lineno\">číslo řádku</span>,\nna kterém chyba je.\nPotom vypíše celý řádek s chybou\na nakonec oznámí <span class=\"err-exctype\">druh chyby</span>\n(v tomto případě je to „syntaktická chyba“)\na případně nějaké bližší upřesnění.</p>\n<div class=\"admonition note\"><p class=\"admonition-title\">Pro zvídavé</p>\n<p>Jak se od téhle chyby liší ta, která nastane, když zkusíš sečíst číslo a řetězec?\nNebo když zkusíš dělit nulou?</p>\n</div><p>Chybové hlášky můžou být ze začátku těžko pochopitelné,\nzvyknout se na ně dá asi jenom praxí.\nPro tebe bude ze začátku důležité hlavně ono číslo řádku.\nKdyž víš, že chyba je na řádku <span class=\"err-lineno\">11</span>,\nmůžeš se podívat na tento řádek a zkusit chybu najít.</p>\n<p>Když chyba není na daném řádku, může být ještě\no pár řádků výš nebo níž:\nPython občas nesdílí lidské představy o tom, kde přesně chyba <em>je</em>,\na ukáže jen, kde si jí sám <em>všimnul</em>.</p>\n<p>V našem případě je chyba v tom, že kolem řetězce nejsou uvozovky.\nPřidej je a program znovu spusť.\nJestli funguje, gratuluji!\nJinak chybu opět oprav a opakuj, dokud to nebude fungovat :)</p>\n<h2>Jak funguje program</h2>\n<p>Teď, když program běží, se můžeme podívat, co se při\njeho spuštění vlastně děje.\nJe to zatím docela jednoduché: příkazy se provádějí jeden po druhém,\nodshora dolů.\nProgram je jako recept na vaření: seznam instrukcí, které říkají co je potřeba\nudělat.</p>\n<p>Zanedlouho budou tvoje programy připomínat spíš recepty na\nčarodějné lektvary (<em>počkej do úplňku a pokud je Mars\nv konjunkci s Jupiterem, třikrát zamíchej</em>),\nale základní myšlenka je stále stejná:\npočítač čte odshora dolů a provádí příkazy jeden po druhém.</p>\n<h2>Print a výrazy</h2>\n<p>A z jakých že instrukcí se náš „recept“ skládá?</p>\n<p>Ten <code>print</code>, který tu celou dobu používáš, je <em>funkce</em>.\nO funkcích se ještě budeme bavit později,\nteď stačí vědět, že když napíšeš <code>print</code>\na za to do závorky několik <em>výrazů</em> (angl. <em>expressions</em>)\noddělených čárkou, hodnoty těchto výrazů se vypíšou.</p>\n<p>A co že je ten výraz?\nV našem programu máš několik příkladů:\nvýraz je číslo, řetězec nebo nějaká (třeba matematická) operace\nsložená z více výrazů.\nTřeba výraz <code>3 + 8</code> sečítá výrazy <code>3</code> a <code>8</code>.</p>\n<p>V sekci o <a href=\"/2019/plzen-podzim-2019/beginners/variables/\">proměnných</a> se\nna výrazy a jejich hodnoty podíváme podrobněji.</p>\n<div class=\"admonition style-note\"><p class=\"admonition-title\">Typografická vsuvka</p>\n<p>Všimni si stylu zápisu: jako v češtině se po otvírací závorce a za\nozavírací závorkou nepíše mezera; na rozdíl od češtiny ale mezera není\nmezi <code>print</code> a závorkou.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s2\">"Ahoj!"</span><span class=\"p\">)</span>\n</pre></div><p>S čárkou je to jako v češtině: mezeru píšeme po čárce, ale ne před ní:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"k\">print</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">3</span><span class=\"p\">)</span>\n</pre></div><p>Kolem operátorů jako <code>+</code> a <code>*</code> se obyčejně píše jedna mezera zleva a\njedna zprava. Někdy je ale přehlednější obě vynechat:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"k\">print</span><span class=\"p\">(</span><span class=\"mi\">2</span> <span class=\"o\">+</span> <span class=\"mi\">8</span><span class=\"p\">)</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s2\">"Jedna a půl je"</span><span class=\"p\">,</span> <span class=\"mi\">1</span> <span class=\"o\">+</span> <span class=\"mi\">1</span><span class=\"o\">/</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n</pre></div></div>\n\n\n " } } }