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ž pod jménem ~/pyladies/02/ahoj.py. Za ~/pyladies musíš doplnit adresář, který jsi vytvořila minule, při instalaci Pythonu. Podadresář 02 musíš vytvořit. Do něj pak soubor ulož jako 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“.

Některé systémy a editory se snaží přípony jako .py schovávat nebo si doplňovat přípony vlastní. V příkazové řádce se ale vždycky ukáže opravdové jméno. Proto ještě v příkazové řádce pomocí cd přejdi do adresáře ~/pyladies/02 a pomocí ls (Unix) nebo dir (Windows) zkontroluj, že se soubor opravdu jmenuje ahoj.py a ne třeba ahoj.py.txt.

Spuštění

Otevři si příkazovou řádku, aktivuj si v ní virtuální prostředí, vlez do adresáře ~/pyladies/02 a zadej tento příkaz:

$ python ahoj.py

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. Aktivaci virtuálního prostředí jsme probraly společně s instalací Pythonu.

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. Je to trochu polovičaté řešení, ale pro naše příklady bude stačit.

Pokud se vypíše hláška, 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, ~/pyladies/02. (Za ~/pyladies musíš doplnit adresář, který jsi vytvořila minule.)
  • Soubor ahoj.py obsahuje správný příkaz, včetně všech uvozovek a závorek.
  • Znak $ nezadáváš – ten je tam proto, aby bylo poznat že jde o příkaz příkazové řádky. Na $ (nebo, na Windows, >) končí dotaz, který vypíše 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:2017/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=\"/2017/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; pod jm&#xE9;nem <code><span class=\"pythondir\">~/pyladies</span>/02/ahoj.py</code>.\nZa <code class=\"pythondir\">~/pyladies</code> mus&#xED;&#x161; doplnit adres&#xE1;&#x159;,\nkter&#xFD; jsi vytvo&#x159;ila minule, p&#x159;i <a href=\"/2017/pyladies-ostrava-jaro/beginners/install/\">instalaci Pythonu</a>.\nPodadres&#xE1;&#x159; <code>02</code> mus&#xED;&#x161; vytvo&#x159;it.\nDo n&#x11B;j pak soubor ulo&#x17E; jako <code>ahoj.py</code>.</p>\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<p>N&#x11B;kter&#xE9; syst&#xE9;my a editory se sna&#x17E;&#xED; p&#x159;&#xED;pony jako <code>.py</code> schov&#xE1;vat\nnebo si dopl&#x148;ovat p&#x159;&#xED;pony vlastn&#xED;. V&#xA0;p&#x159;&#xED;kazov&#xE9; &#x159;&#xE1;dce se ale v&#x17E;dycky uk&#xE1;&#x17E;e\nopravdov&#xE9; jm&#xE9;no.\nProto je&#x161;t&#x11B; v&#xA0;p&#x159;&#xED;kazov&#xE9; &#x159;&#xE1;dce pomoc&#xED; <code>cd</code> p&#x159;ejdi do adres&#xE1;&#x159;e <code><span class=\"pythondir\">~/pyladies</span>/02</code>\na pomoc&#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>.</p>\n<h2>Spu&#x161;t&#x11B;n&#xED;</h2>\n<p>Otev&#x159;i si p&#x159;&#xED;kazovou &#x159;&#xE1;dku, aktivuj si v&#xA0;n&#xED; virtu&#xE1;ln&#xED; prost&#x159;ed&#xED;,\nvlez do adres&#xE1;&#x159;e <code><span class=\"pythondir\">~/pyladies</span>/02</code>\na zadej tento p&#x159;&#xED;kaz:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">$ </span>python ahoj.py\n</pre></div><div class=\"admonition note\"><p>S&#xA0;p&#x159;&#xED;kazovou &#x159;&#xE1;dkou jsme se sezn&#xE1;mily\nv&#xA0;<a href=\"/2017/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>.\nAktivaci virtu&#xE1;ln&#xED;ho prost&#x159;ed&#xED; jsme probraly spole&#x10D;n&#x11B;\ns&#xA0;<a href=\"/2017/pyladies-ostrava-jaro/beginners/install/\">instalac&#xED; Pythonu</a>.</p>\n</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>.\nJe to trochu polovi&#x10D;at&#xE9; &#x159;e&#x161;en&#xED;, ale pro na&#x161;e p&#x159;&#xED;klady bude sta&#x10D;it.</p>\n</div><p>Pokud se vyp&#xED;&#x161;e hl&#xE1;&#x161;ka, 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=\"/2017/pyladies-ostrava-jaro/beginners/install/\">minula</a>.)</li>\n<li>Jsi ve spr&#xE1;vn&#xE9;m adres&#xE1;&#x159;i, <code><span class=\"pythondir\">~/pyladies</span>/02</code>.\n(Za <span class=\"pythondir\">~/pyladies</span> mus&#xED;&#x161; doplnit adres&#xE1;&#x159;, kter&#xFD; jsi vytvo&#x159;ila minule.)</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>Znak <code>$</code> nezad&#xE1;v&#xE1;&#x161; &#x2013; ten je tam proto, aby bylo poznat &#x17E;e jde o p&#x159;&#xED;kaz p&#x159;&#xED;kazov&#xE9;\n&#x159;&#xE1;dky.\nNa <code>$</code> (nebo, na Windows, <code>&gt;</code>) kon&#x10D;&#xED; dotaz, kter&#xFD; vyp&#xED;&#x161;e 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        "
    }
  }
}