Ulož to!

Zatím jsi psal/a všechny programy v konzoli v interaktivním režimu Pythonu, který nás omezuje na jeden řádek kódu. Když Python opustíš (nebo vypneš počítač), všechno co jsi zatím naprogramoval/a se ztratí.

Větší programy jsou trvanlivější: ukládají se do souborů a dají se kdykoli spustit znovu.

Vyzkoušejme si to. Budeme potřebovat:

  • Ukončit interaktivní režim Pythonu
  • Otevřít editor kódu
  • Uložit kód do nového souboru
  • Spustit ho!

Zkus vypnout Python. Existuje na to funkce exit():

>>> exit()

Tak se dostaneš zpět do příkazové řádky. Pamatuješ na ni? Už neuvidíš >>>, ale řádek končící $ nebo >. Budou tu fungovat příkazy jako cd a mkdir, ale ne příkazy Pythonu, jako 1 + 1.

Doufám, že máš nainstalovaný textový editor. Ten teď otevři, udělej si nový soubor a napiš něj tento příkaz:

print('Hello, PyLadies!')

Nový soubor ulož pod nějakým popisným názvem: python_intro.py. Ulož si jej do adresáře, kam si budeš dávat soubory k tomuto workshopu. Jméno musí končit na .py: tahle přípona říká editoru nebo i operačnímu systému, že jde o program v Pythonu a Python ho může spustit.

Obarvování

Po uložení by se text měl obarvit. V interaktivním režimu Pythonu mělo vše stejnou barvu, ale nyní bys měla vidět, že jméno funkce print je jinou barvou než řetězec v závorkách. Barvy nevolíš sám/sama, vybírá je editor na základě toho, jak potom Python kódu porozumí.

Nazývá se to "zvýrazňování syntaxe" a je to užitečná funkce. Chce to trochu praxe, ale barvy můžou napovědět že ti chybí uvozovka za řetězcem nebo máš překlep v klíčovém slovu jako del. To je jeden z důvodů, proč používáme editory kódu :)

Pokud máš soubor uložen, je čas jej spustit! Pomocí dovedností, které jsi se naučil/a v sekci o příkazové řádce, změň adresář na ten, kam jsi soubor uložil/a.

Pokud nevíš jak dál, požádej o pomoc kouče.

Nyní pomocí Pythonu spusť kód v souboru:

(venv) $ python python_intro.py
Hello, PyLadies!

Funguje? Vidíš text? Jesli ano, právě jsi spustil/a svůj první opravdový program v Pythonu! Cítíš se úžasně?

Vstup a výstup

Funkce print(), kterou jsi použila, umí něco vypsat na obrazovku. V konzoli se hodnoty výrazů vypisovaly automaticky, abys je mohl/a průběžně kontrolovat, ale programy v souborech bývají složitější a výpisy z každého kroku by byly nepřehledné. Proto na vypsání potřebuješ print(). Zkus si to:

jmeno = 'Ola'

'Já jsem ' + jmeno  # Tohle Python nevypíše

print(jmeno * 8)    # Tohle jo!

Do závorek funkce print() můžeš dát i víc hodnot oddělených čárkami.

jmeno = 'Amálka'
vek = 5
print('Já jsem', jmeno, 'a je mi', vek)

print('Za rok mi bude', vek + 1)

Další užitečná funkce je input(), která se umí zeptat na otázku. Odpověď pak vrátí jako řetězec, který si můžeš uložit do proměnné:

jmeno = input('Jak se jmenuješ? ')
print(jmeno, 'umí programovat!')

A co když budeš chtít spíš číslo než text? Pamatuješ si na funkci, která umí převést řetězec na číslo?

letopocet = int(input('Jaký je letos rok? '))
print('Loni byl rok', letopocet - 1)

Komentáře

Všiml/a sis u předchozího programu poznámek za „mřížkou“ (#)?

jmeno = 'Ola'

'Já jsem ' + jmeno  # Tohle Python nevypíše

print(jmeno * 8)    # Tohle jo!

To jsou takzvané komentáře. Jsou určené jen pro lidi: Python je úplně ignoruje.

Teď, když své programy ukládáš na disk a můžeš se k nim vracet, je důležité aby byly čitelné: aby z nich nejen počítače, ale i lidi poznali, co mají dělat. Vždycky když napíšeš nějaký složitější kus kódu k němu zkus přidat komentář s vysvětlivkou. Až se k programu za pár dní nebo měsíců vrátíš, poděkuješ si!

Shrnutí

  • Příkaz python spustí uložený soubor jako program v Pythonu.
  • Funkce print vypisuje hodnoty.
  • Komentáře můžou zpřehlednit složitější kód. Python je ignoruje.
{
  "data": {
    "sessionMaterial": {
      "id": "session-material:2018/snake-brno-codeweek:intro:9",
      "title": "Ulož to!",
      "html": "\n          \n    \n\n    <h1>Ulo&#x17E; to!</h1>\n<p>Zat&#xED;m jsi psal/a v&#x161;echny programy v&#xA0;konzoli v&#xA0;interaktivn&#xED;m re&#x17E;imu Pythonu,\nkter&#xFD; n&#xE1;s omezuje na jeden &#x159;&#xE1;dek k&#xF3;du.\nKdy&#x17E; Python opust&#xED;&#x161; (nebo vypne&#x161; po&#x10D;&#xED;ta&#x10D;),\nv&#x161;echno co jsi zat&#xED;m naprogramoval/a se ztrat&#xED;.</p>\n<p>V&#x11B;t&#x161;&#xED; programy jsou trvanliv&#x11B;j&#x161;&#xED;: ukl&#xE1;daj&#xED; se do soubor&#x16F; a daj&#xED; se kdykoli\nspustit znovu.</p>\n<p>Vyzkou&#x161;ejme si to. Budeme pot&#x159;ebovat:</p>\n<ul>\n<li>Ukon&#x10D;it interaktivn&#xED; re&#x17E;im Pythonu</li>\n<li>Otev&#x159;&#xED;t editor k&#xF3;du</li>\n<li>Ulo&#x17E;it k&#xF3;d do nov&#xE9;ho souboru</li>\n<li>Spustit ho!</li>\n</ul>\n<p>Zkus vypnout Python. Existuje na to funkce <code>exit()</code>:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">exit</span><span class=\"p\">()</span>\n</pre></div><p>Tak se dostane&#x161; zp&#x11B;t do p&#x159;&#xED;kazov&#xE9; &#x159;&#xE1;dky. Pamatuje&#x161; na ni?\nU&#x17E; neuvid&#xED;&#x161; <code>&gt;&gt;&gt;</code>, ale &#x159;&#xE1;dek kon&#x10D;&#xED;c&#xED; <code>$</code> nebo <code>&gt;</code>.\nBudou tu fungovat p&#x159;&#xED;kazy jako <code>cd</code> a <code>mkdir</code>,\nale ne p&#x159;&#xED;kazy Pythonu, jako <code>1 + 1</code>.</p>\n<p>Douf&#xE1;m, &#x17E;e m&#xE1;&#x161; nainstalovan&#xFD; <a href=\"/2018/snake-brno-codeweek/beginners/install-editor/\">textov&#xFD; editor</a>.\nTen te&#x10F; otev&#x159;i, ud&#x11B;lej si nov&#xFD; soubor a napi&#x161; n&#x11B;j tento p&#x159;&#xED;kaz:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s1\">&apos;Hello, PyLadies!&apos;</span><span class=\"p\">)</span>\n</pre></div><p>Nov&#xFD; soubor ulo&#x17E; pod n&#x11B;jak&#xFD;m popisn&#xFD;m n&#xE1;zvem: <code>python_intro.py</code>.\nUlo&#x17E; si jej do adres&#xE1;&#x159;e, kam si bude&#x161; d&#xE1;vat soubory k&#xA0;tomuto workshopu.\nJm&#xE9;no mus&#xED; kon&#x10D;it na <code>.py</code>: tahle p&#x159;&#xED;pona &#x159;&#xED;k&#xE1; editoru nebo i\nopera&#x10D;n&#xED;mu syst&#xE9;mu, &#x17E;e jde o program v&#xA0;Pythonu a Python ho m&#x16F;&#x17E;e spustit.</p>\n<div class=\"admonition note\"><p class=\"admonition-title\">Obarvov&#xE1;n&#xED;</p>\n<p>Po ulo&#x17E;en&#xED; by se text m&#x11B;l obarvit.\nV interaktivn&#xED;m re&#x17E;imu Pythonu m&#x11B;lo v&#x161;e stejnou barvu,\nale nyn&#xED; bys m&#x11B;la vid&#x11B;t, &#x17E;e jm&#xE9;no funkce <code>print</code> je jinou barvou ne&#x17E;\n&#x159;et&#x11B;zec v&#xA0;z&#xE1;vork&#xE1;ch.\nBarvy nevol&#xED;&#x161; s&#xE1;m/sama, vyb&#xED;r&#xE1; je editor na z&#xE1;klad&#x11B; toho,\njak potom Python k&#xF3;du porozum&#xED;.</p>\n<p>Naz&#xFD;v&#xE1; se to &quot;zv&#xFD;raz&#x148;ov&#xE1;n&#xED; syntaxe&quot; a je to u&#x17E;ite&#x10D;n&#xE1; funkce.\nChce to trochu praxe, ale barvy m&#x16F;&#x17E;ou napov&#x11B;d&#x11B;t\n&#x17E;e ti chyb&#xED; uvozovka za &#x159;et&#x11B;zcem\nnebo m&#xE1;&#x161; p&#x159;eklep v&#xA0;kl&#xED;&#x10D;ov&#xE9;m slovu jako <code>del</code>.\nTo je jeden z d&#x16F;vod&#x16F;, pro&#x10D; pou&#x17E;&#xED;v&#xE1;me editory k&#xF3;du :)</p>\n</div><p>Pokud m&#xE1;&#x161; soubor ulo&#x17E;en, je &#x10D;as jej spustit!\nPomoc&#xED; dovednost&#xED;, kter&#xE9; jsi se nau&#x10D;il/a v&#xA0;sekci\no p&#x159;&#xED;kazov&#xE9; &#x159;&#xE1;dce, <em>zm&#x11B;&#x148; adres&#xE1;&#x159;</em> na ten, kam jsi soubor ulo&#x17E;il/a.</p>\n<p>Pokud nev&#xED;&#x161; jak d&#xE1;l, po&#x17E;&#xE1;dej o pomoc kou&#x10D;e.</p>\n<p>Nyn&#xED; pomoc&#xED; Pythonu spus&#x165; k&#xF3;d v&#xA0;souboru:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">(venv) $ </span>python python_intro.py\n<span class=\"go\">Hello, PyLadies!</span>\n</pre></div><p>Funguje? Vid&#xED;&#x161; text?\nJesli ano, pr&#xE1;v&#x11B; jsi spustil/a sv&#x16F;j prvn&#xED; opravdov&#xFD; program v&#xA0;Pythonu!\nC&#xED;t&#xED;&#x161; se &#xFA;&#x17E;asn&#x11B;?</p>\n<h2>Vstup a v&#xFD;stup</h2>\n<p>Funkce <code>print()</code>, kterou jsi pou&#x17E;ila, um&#xED; n&#x11B;co <em>vypsat</em> na obrazovku.\nV&#xA0;konzoli se hodnoty v&#xFD;raz&#x16F; vypisovaly automaticky, abys je mohl/a\npr&#x16F;b&#x11B;&#x17E;n&#x11B; kontrolovat, ale programy v&#xA0;souborech b&#xFD;vaj&#xED; slo&#x17E;it&#x11B;j&#x161;&#xED; a v&#xFD;pisy\nz&#xA0;ka&#x17E;d&#xE9;ho kroku by byly nep&#x159;ehledn&#xE9;.\nProto na vyps&#xE1;n&#xED; pot&#x159;ebuje&#x161; <code>print()</code>.\nZkus si to:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"n\">jmeno</span> <span class=\"o\">=</span> <span class=\"s1\">&apos;Ola&apos;</span>\n\n<span class=\"s1\">&apos;J&#xE1; jsem &apos;</span> <span class=\"o\">+</span> <span class=\"n\">jmeno</span>  <span class=\"c1\"># Tohle Python nevyp&#xED;&#x161;e</span>\n\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"n\">jmeno</span> <span class=\"o\">*</span> <span class=\"mi\">8</span><span class=\"p\">)</span>    <span class=\"c1\"># Tohle jo!</span>\n</pre></div><p>Do z&#xE1;vorek funkce <code>print()</code> m&#x16F;&#x17E;e&#x161; d&#xE1;t i v&#xED;c hodnot odd&#x11B;len&#xFD;ch &#x10D;&#xE1;rkami.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"n\">jmeno</span> <span class=\"o\">=</span> <span class=\"s1\">&apos;Am&#xE1;lka&apos;</span>\n<span class=\"n\">vek</span> <span class=\"o\">=</span> <span class=\"mi\">5</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s1\">&apos;J&#xE1; jsem&apos;</span><span class=\"p\">,</span> <span class=\"n\">jmeno</span><span class=\"p\">,</span> <span class=\"s1\">&apos;a je mi&apos;</span><span class=\"p\">,</span> <span class=\"n\">vek</span><span class=\"p\">)</span>\n\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s1\">&apos;Za rok mi bude&apos;</span><span class=\"p\">,</span> <span class=\"n\">vek</span> <span class=\"o\">+</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n</pre></div><p>Dal&#x161;&#xED; u&#x17E;ite&#x10D;n&#xE1; funkce je <code>input()</code>, kter&#xE1; se um&#xED; zeptat na ot&#xE1;zku.\nOdpov&#x11B;&#x10F; pak vr&#xE1;t&#xED; jako &#x159;et&#x11B;zec, kter&#xFD; si m&#x16F;&#x17E;e&#x161; ulo&#x17E;it do prom&#x11B;nn&#xE9;:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"n\">jmeno</span> <span class=\"o\">=</span> <span class=\"nb\">input</span><span class=\"p\">(</span><span class=\"s1\">&apos;Jak se jmenuje&#x161;? &apos;</span><span class=\"p\">)</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"n\">jmeno</span><span class=\"p\">,</span> <span class=\"s1\">&apos;um&#xED; programovat!&apos;</span><span class=\"p\">)</span>\n</pre></div><p>A co kdy&#x17E; bude&#x161; cht&#xED;t sp&#xED;&#x161; &#x10D;&#xED;slo ne&#x17E; text?\nPamatuje&#x161; si na funkci, kter&#xE1; um&#xED; p&#x159;ev&#xE9;st &#x159;et&#x11B;zec na &#x10D;&#xED;slo?</p>\n<div class=\"highlight\"><pre><span></span><span class=\"n\">letopocet</span> <span class=\"o\">=</span> <span class=\"nb\">int</span><span class=\"p\">(</span><span class=\"nb\">input</span><span class=\"p\">(</span><span class=\"s1\">&apos;Jak&#xFD; je letos rok? &apos;</span><span class=\"p\">))</span>\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s1\">&apos;Loni byl rok&apos;</span><span class=\"p\">,</span> <span class=\"n\">letopocet</span> <span class=\"o\">-</span> <span class=\"mi\">1</span><span class=\"p\">)</span>\n</pre></div><h2>Koment&#xE1;&#x159;e</h2>\n<p>V&#x161;iml/a sis u p&#x159;edchoz&#xED;ho programu pozn&#xE1;mek za &#x201E;m&#x159;&#xED;&#x17E;kou&#x201C; (<code>#</code>)?</p>\n<div class=\"highlight\"><pre><span></span><span class=\"n\">jmeno</span> <span class=\"o\">=</span> <span class=\"s1\">&apos;Ola&apos;</span>\n\n<span class=\"s1\">&apos;J&#xE1; jsem &apos;</span> <span class=\"o\">+</span> <span class=\"n\">jmeno</span>  <span class=\"c1\"># Tohle Python nevyp&#xED;&#x161;e</span>\n\n<span class=\"k\">print</span><span class=\"p\">(</span><span class=\"n\">jmeno</span> <span class=\"o\">*</span> <span class=\"mi\">8</span><span class=\"p\">)</span>    <span class=\"c1\"># Tohle jo!</span>\n</pre></div><p>To jsou takzvan&#xE9; <em>koment&#xE1;&#x159;e</em>.\nJsou ur&#x10D;en&#xE9; jen pro lidi: Python je &#xFA;pln&#x11B; ignoruje.</p>\n<p>Te&#x10F;, kdy&#x17E; sv&#xE9; programy ukl&#xE1;d&#xE1;&#x161; na disk a m&#x16F;&#x17E;e&#x161; se k nim vracet,\nje d&#x16F;le&#x17E;it&#xE9; aby byly <em>&#x10D;iteln&#xE9;</em>: aby z&#xA0;nich nejen po&#x10D;&#xED;ta&#x10D;e, ale i lidi\npoznali, co maj&#xED; d&#x11B;lat.\nV&#x17E;dycky kdy&#x17E; nap&#xED;&#x161;e&#x161; n&#x11B;jak&#xFD; slo&#x17E;it&#x11B;j&#x161;&#xED; kus k&#xF3;du k&#xA0;n&#x11B;mu zkus p&#x159;idat koment&#xE1;&#x159;\ns&#xA0;vysv&#x11B;tlivkou.\nA&#x17E; se k programu za p&#xE1;r dn&#xED; nebo m&#x11B;s&#xED;c&#x16F; vr&#xE1;t&#xED;&#x161;, pod&#x11B;kuje&#x161; si!</p>\n<h2>Shrnut&#xED;</h2>\n<ul>\n<li>P&#x159;&#xED;kaz <strong>python</strong> spust&#xED; ulo&#x17E;en&#xFD; soubor jako program v&#xA0;Pythonu.</li>\n<li>Funkce <strong>print</strong> vypisuje hodnoty.</li>\n<li><strong>Koment&#xE1;&#x159;e</strong> m&#x16F;&#x17E;ou zp&#x159;ehlednit slo&#x17E;it&#x11B;j&#x161;&#xED; k&#xF3;d. Python je ignoruje.</li>\n</ul>\n\n\n        "
    }
  }
}