První program

>>> 3 + 4
7

Psaní příkazů přímo v Pythonu, interaktivně, má jednu velkou nevýhodu: to, co napíšeš, se ztratí, jakmile zavřeš okno příkazové řádky. Na jednoduché výpočty to nevadí, ale až budou tvoje programy složitější, budeš je potřebovat nějak uložit.

Otevři editor (Ten bys měla mít nainstalovaný, jestli ne, instrukce jsou v předchozí lekci.)

V něm vytvoř nový soubor, do kterého napiš následující text:

print("Ahoj světe!")

Pak soubor ulož jako ahoj.py:

  • V adresáři, kde máš soubory ke kurzům Pythonu, si založ adresář pojmenovaný podle čísla lekce (např. 02). Měl by být vedle tvého virtuálního prostředí.
  • Do něj pak soubor ulož pod jménem ahoj.py.

Pokud máš v ukládacím okýnku možnost zvolit kódování, zvol UTF-8. Můžeš–li zvolit typ souboru, zvol .py nebo „všechny soubory“.

Spuštění

Otevři si příkazovou řádku. Pomocí cd donaviguj do adresáře, kde máš soubory ke kurzům Pythonu.

S příkazovou řádkou jsme se seznámily v minulé lekci, která popisuje i změnu aktuálního adresáře pomocí příkazu cd.

Aktivuj si virtuální prostředí.

Příkaz k tomu jsme si ukázali na konci návodu na tvorbu virtuálního prostředí; končí activate.

Pak a zadej tento příkaz:

(venv)$ python ahoj.py

Poznámka pro Windows a starší Python

V nečeských Windows s Pythonem 3.5 či nižším bude třeba před programem spustit chcp 1250, jinak bude program píšící české znaky končit chybou UnicodeEncodeError.

Pokud se vypíše hláška Ahoj světe!, gratuluji! Napsala jsi svůj první program v Pythonu!

Jestli to nefunguje, zkontroluj, že:

  • Máš zapnuté virtuální prostředí. (Na příkazové řádce se musí ukazovat (venv); pokud tam není, použij příkaz „activate“ z minula.)
  • Jsi ve správném adresáři. Zkus pwd (Unix) nebo cd (Windows). Aktuální adresář musí být ten, do kterého jsi uložila soubor s programem.
  • Soubor se opravdu jmenuje ahoj.py. Pomocí ls (Unix) nebo dir (Windows) zkontroluj, že se soubor opravdu jmenuje ahoj.py a ne třeba ahoj.py.txt. Jestli ne, ulož ho znovu pod správným jménem.
  • Soubor ahoj.py obsahuje správný příkaz, včetně všech uvozovek a závorek.
  • Slovo (venv) ani znak $ nezadáváš – v materiálech jsou proto, aby bylo poznat že jde o příkaz příkazové řádky. Na $ (nebo, na Windows, >) končí dotaz, který vypíše sám počítač. Příkaz, který zadáváš ty, je jen python ahoj.py.

A jestli to pořád nefunguje, zeptej se kouče.

Typografická vsuvka

V Pythonu je většinou jedno, kde napíšeš mezeru. Stejně jako náš příkaz print("Ahoj světe!") by fungovalo třeba:

print      (   "Ahoj světe!"     )

Je ale zvykem dodržovat určitá pravidla. 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 mezeru nepiš ani mezi print a závorkou. „Správně“ je tedy:

print("Ahoj světe!")

V rámci uvozovek má pak každá mezera význam: když napíšeš " Ahoj světe!", mezery navíc se objeví ve výsledné hlášce.

{
  "data": {
    "sessionMaterial": {
      "id": "session-material:2019/pyladies-ostrava-jaro:hello-world:0",
      "title": "PrvnĂ­ program",
      "html": "\n          \n    \n\n    <h1>Prvn&#xED; program</h1>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"mi\">3</span> <span class=\"o\">+</span> <span class=\"mi\">4</span>\n<span class=\"go\">7</span>\n</pre></div><p>Psan&#xED; p&#x159;&#xED;kaz&#x16F; p&#x159;&#xED;mo v&#xA0;Pythonu, <em>interaktivn&#x11B;</em>,\nm&#xE1; jednu velkou nev&#xFD;hodu:\nto, co nap&#xED;&#x161;e&#x161;, se ztrat&#xED;, jakmile zav&#x159;e&#x161; okno p&#x159;&#xED;kazov&#xE9; &#x159;&#xE1;dky.\nNa jednoduch&#xE9; v&#xFD;po&#x10D;ty to nevad&#xED;, ale a&#x17E; budou tvoje programy slo&#x17E;it&#x11B;j&#x161;&#xED;,\nbude&#x161; je pot&#x159;ebovat n&#x11B;jak ulo&#x17E;it.</p>\n<p>Otev&#x159;i editor\n(Ten bys m&#x11B;la m&#xED;t nainstalovan&#xFD;, jestli ne, instrukce jsou v&#xA0;<a href=\"/2019/pyladies-ostrava-jaro/beginners/install-editor/\">p&#x159;edchoz&#xED;\nlekci</a>.)</p>\n<p>V&#xA0;n&#x11B;m vytvo&#x159; nov&#xFD; soubor, do kter&#xE9;ho napi&#x161; n&#xE1;sleduj&#xED;c&#xED; text:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;Ahoj sv&#x11B;te!&quot;</span><span class=\"p\">)</span>\n</pre></div><p>Pak soubor ulo&#x17E; jako <code>ahoj.py</code>:</p>\n<ul>\n<li>V adres&#xE1;&#x159;i, kde m&#xE1;&#x161; soubory ke kurz&#x16F;m Pythonu, si zalo&#x17E; adres&#xE1;&#x159; pojmenovan&#xFD;\npodle &#x10D;&#xED;sla lekce (nap&#x159;. <code>02</code>).\nM&#x11B;l by b&#xFD;t vedle tv&#xE9;ho virtu&#xE1;ln&#xED;ho prost&#x159;ed&#xED;.</li>\n<li>Do n&#x11B;j pak soubor ulo&#x17E; pod jm&#xE9;nem <code>ahoj.py</code>.</li>\n</ul>\n<p>Pokud m&#xE1;&#x161; v&#xA0;ukl&#xE1;dac&#xED;m ok&#xFD;nku mo&#x17E;nost zvolit <em>k&#xF3;dov&#xE1;n&#xED;</em>, zvol <code>UTF-8</code>.\nM&#x16F;&#x17E;e&#x161;&#x2013;li zvolit typ souboru, zvol <code>.py</code> nebo &#x201E;v&#x161;echny soubory&#x201C;.</p>\n<h2>Spu&#x161;t&#x11B;n&#xED;</h2>\n<p>Otev&#x159;i si p&#x159;&#xED;kazovou &#x159;&#xE1;dku.\nPomoc&#xED; <code>cd</code> donaviguj do adres&#xE1;&#x159;e, kde m&#xE1;&#x161; soubory ke kurz&#x16F;m Pythonu.</p>\n<div class=\"admonition note\"><p>S&#xA0;p&#x159;&#xED;kazovou &#x159;&#xE1;dkou jsme se sezn&#xE1;mily\nv&#xA0;<a href=\"/2019/pyladies-ostrava-jaro/beginners/cmdline/\">minul&#xE9; lekci</a>, kter&#xE1; popisuje i zm&#x11B;nu aktu&#xE1;ln&#xED;ho\nadres&#xE1;&#x159;e pomoc&#xED; p&#x159;&#xED;kazu <code>cd</code>.</p>\n</div><p>Aktivuj si virtu&#xE1;ln&#xED; prost&#x159;ed&#xED;.</p>\n<div class=\"admonition note\"><p>P&#x159;&#xED;kaz k&#xA0;tomu jsme si uk&#xE1;zali na konci\n<a href=\"/2019/pyladies-ostrava-jaro/beginners/venv-setup/\">n&#xE1;vodu na tvorbu virtu&#xE1;ln&#xED;ho prost&#x159;ed&#xED;</a>; kon&#x10D;&#xED; <code>activate</code>.</p>\n</div><p>Pak a zadej tento p&#x159;&#xED;kaz:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">(venv)$ </span>python ahoj.py\n</pre></div><div class=\"admonition note\"><p class=\"admonition-title\">Pozn&#xE1;mka pro Windows a star&#x161;&#xED; Python</p>\n<p>V&#xA0;ne&#x10D;esk&#xFD;ch Windows s&#xA0;Pythonem 3.5 &#x10D;i ni&#x17E;&#x161;&#xED;m bude t&#x159;eba p&#x159;ed\nprogramem spustit <code>chcp 1250</code>, jinak bude program p&#xED;&#x161;&#xED;c&#xED; &#x10D;esk&#xE9;\nznaky kon&#x10D;it chybou <code>UnicodeEncodeError</code>.</p>\n</div><p>Pokud se vyp&#xED;&#x161;e hl&#xE1;&#x161;ka <code>Ahoj sv&#x11B;te!</code>, gratuluji!\nNapsala jsi sv&#x16F;j prvn&#xED; program v&#xA0;Pythonu!</p>\n<p>Jestli to nefunguje, zkontroluj, &#x17E;e:</p>\n<ul>\n<li>M&#xE1;&#x161; zapnut&#xE9; virtu&#xE1;ln&#xED; prost&#x159;ed&#xED;.\n(Na p&#x159;&#xED;kazov&#xE9; &#x159;&#xE1;dce se mus&#xED; ukazovat <code>(venv)</code>;\npokud tam nen&#xED;, pou&#x17E;ij p&#x159;&#xED;kaz &#x201E;activate&#x201C; z&#xA0;<a href=\"/2019/pyladies-ostrava-jaro/beginners/install/\">minula</a>.)</li>\n<li>Jsi ve spr&#xE1;vn&#xE9;m adres&#xE1;&#x159;i. Zkus <code>pwd</code> (Unix) nebo <code>cd</code> (Windows).\nAktu&#xE1;ln&#xED; adres&#xE1;&#x159; mus&#xED; b&#xFD;t ten, do kter&#xE9;ho jsi ulo&#x17E;ila\nsoubor s&#xA0;programem.</li>\n<li>Soubor se opravdu jmenuje <code>ahoj.py</code>.\nPomoc&#xED; <code>ls</code> (Unix) nebo <code>dir</code> (Windows) zkontroluj, &#x17E;e se soubor opravdu\njmenuje <code>ahoj.py</code> a ne t&#x159;eba <code>ahoj.py.txt</code>.\nJestli ne, ulo&#x17E; ho znovu pod spr&#xE1;vn&#xFD;m jm&#xE9;nem.</li>\n<li>Soubor <code>ahoj.py</code> obsahuje spr&#xE1;vn&#xFD; p&#x159;&#xED;kaz, v&#x10D;etn&#x11B; v&#x161;ech uvozovek a z&#xE1;vorek.</li>\n<li>Slovo <code>(venv)</code> ani znak <code>$</code> nezad&#xE1;v&#xE1;&#x161; &#x2013; v&#xA0;materi&#xE1;lech jsou proto, aby bylo\npoznat &#x17E;e jde o p&#x159;&#xED;kaz p&#x159;&#xED;kazov&#xE9; &#x159;&#xE1;dky.\nNa <code>$</code> (nebo, na Windows, <code>&gt;</code>) kon&#x10D;&#xED; dotaz, kter&#xFD; vyp&#xED;&#x161;e s&#xE1;m po&#x10D;&#xED;ta&#x10D;.\nP&#x159;&#xED;kaz, kter&#xFD; zad&#xE1;v&#xE1;&#x161; ty, je jen <code>python ahoj.py</code>.</li>\n</ul>\n<p>A jestli to po&#x159;&#xE1;d nefunguje, zeptej se\nkou&#x10D;e.</p>\n<div class=\"admonition style-note\"><p class=\"admonition-title\">Typografick&#xE1; vsuvka</p>\n<p>V&#xA0;Pythonu je v&#x11B;t&#x161;inou jedno, kde nap&#xED;&#x161;e&#x161; mezeru. Stejn&#x11B; jako n&#xE1;&#x161; p&#x159;&#xED;kaz\n<code>print(&quot;Ahoj sv&#x11B;te!&quot;)</code> by fungovalo t&#x159;eba:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"k\">print</span>      <span class=\"p\">(</span>   <span class=\"s2\">&quot;Ahoj sv&#x11B;te!&quot;</span>     <span class=\"p\">)</span>\n</pre></div><p>Je ale zvykem dodr&#x17E;ovat ur&#x10D;it&#xE1; pravidla.\nJako v &#x10D;e&#x161;tin&#x11B; se po otv&#xED;rac&#xED; z&#xE1;vorce a za\nozav&#xED;rac&#xED; z&#xE1;vorkou nep&#xED;&#x161;e mezera.\nNa rozd&#xED;l od &#x10D;e&#x161;tiny ale mezeru nepi&#x161; ani mezi <code>print</code> a z&#xE1;vorkou.\n&#x201E;Spr&#xE1;vn&#x11B;&#x201C; je tedy:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"k\">print</span><span class=\"p\">(</span><span class=\"s2\">&quot;Ahoj sv&#x11B;te!&quot;</span><span class=\"p\">)</span>\n</pre></div><p>V&#xA0;r&#xE1;mci uvozovek m&#xE1; pak ka&#x17E;d&#xE1; mezera v&#xFD;znam: kdy&#x17E; nap&#xED;&#x161;e&#x161;\n<code>&quot;    Ahoj      sv&#x11B;te!&quot;</code>, mezery nav&#xED;c se objev&#xED; ve v&#xFD;sledn&#xE9; hl&#xE1;&#x161;ce.</p>\n</div>\n\n\n        "
    }
  }
}