Import a náhoda

V Pythonu je spousta funkčnosti k dispozici přímo – funkce jako print, len nebo int můžeš rovnou použít. Ještě víc věcí je v Pythonu sice k dispozici, ale jen když si „o ně řekneš“. Jsou sdružené do modulů – souborů funkcí (a dalších věcí), které spolu nějak souvisí.

Například když chceme pracovat s náhodnými hodnotami, můžeš využít modul random. Naimportuj z něj funkci randrange:

>>> from random import randrange

Jakmile to uděláš, funkce randrange ti bude k dispozici. Můžeš ji zavolat, a dostat tak náhodné číslo:

>>> randrange(6)
3
>>> randrange(6)
1
>>> randrange(6)
2
>>> randrange(6)
4
>>> randrange(6)
5
>>> randrange(6)
3
>>> randrange(6)
0
>>> randrange(6)
3
>>> randrange(6)
1

Argument funkce randrange udává, kolik možných výsledků může vrátit. Funkce pak vrací čísla od nuly, takže randrange(6) může vrátit od 0, 1, 2, 3, 4 nebo 5. Šestku už ne.

Náhoda a seznamy

Naimportuj si ještě dvě funkce:

>>> from random import choice, shuffle

První z nich, choice, umí vybrat náhodný prvek ze seznamu:

>>> loterie = [3, 42, 12, 19, 30, 59]
>>> choice(loterie)
12
>>> choice(loterie)
30

Druhá, shuffle, umožní seznam náhodně zamíchat. Podobně jako metoda sort, shuffle nic nevrací – jen potichu změní pořadí:

>>> loterie = [3, 42, 12, 19, 30, 59]
>>> shuffle(loterie)
>>> loterie
[12, 59, 19, 42, 3, 30]
>>> shuffle(loterie)
>>> loterie
[59, 3, 30, 19, 12, 42]

Shrnutí

Tohle byla docela krátká sekce – ale důležitá!

  • Import nám může zpřístupnit funkce z modulů, které nejsou k dispozici přímo v Pythonu.
  • Modul random obsahuje funkce na výběr náhodných čísel nebo náhodných prvků ze seznamu.
{
  "data": {
    "sessionMaterial": {
      "id": "session-material:2018/snake-brno-codeweek:intro:6",
      "title": "Import a nĂ¡hoda",
      "html": "\n          \n    \n\n    <h1>Import a n&#xE1;hoda</h1>\n<p>V&#xA0;Pythonu je spousta funk&#x10D;nosti k&#xA0;dispozici p&#x159;&#xED;mo &#x2013; funkce jako <code>print</code>, <code>len</code>\nnebo <code>int</code> m&#x16F;&#x17E;e&#x161; rovnou pou&#x17E;&#xED;t.\nJe&#x161;t&#x11B; v&#xED;c v&#x11B;c&#xED; je v&#xA0;Pythonu sice k dispozici, ale jen kdy&#x17E; si &#x201E;o n&#x11B; &#x159;ekne&#x161;&#x201C;.\nJsou sdru&#x17E;en&#xE9; do <em>modul&#x16F;</em> &#x2013; soubor&#x16F; funkc&#xED; (a dal&#x161;&#xED;ch v&#x11B;c&#xED;), kter&#xE9; spolu n&#x11B;jak\nsouvis&#xED;.</p>\n<p>Nap&#x159;&#xED;klad kdy&#x17E; chceme pracovat s&#xA0;n&#xE1;hodn&#xFD;mi hodnotami, m&#x16F;&#x17E;e&#x161; vyu&#x17E;&#xED;t modul\n<code>random</code>.\nNaimportuj z&#xA0;n&#x11B;j funkci <code>randrange</code>:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">random</span> <span class=\"kn\">import</span> <span class=\"n\">randrange</span>\n</pre></div><p>Jakmile to ud&#x11B;l&#xE1;&#x161;, funkce <code>randrange</code> ti bude k&#xA0;dispozici.\nM&#x16F;&#x17E;e&#x161; ji zavolat, a dostat tak n&#xE1;hodn&#xE9; &#x10D;&#xED;slo:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">randrange</span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"go\">3</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">randrange</span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"go\">1</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">randrange</span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"go\">2</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">randrange</span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"go\">4</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">randrange</span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"go\">5</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">randrange</span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"go\">3</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">randrange</span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"go\">0</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">randrange</span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"go\">3</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">randrange</span><span class=\"p\">(</span><span class=\"mi\">6</span><span class=\"p\">)</span>\n<span class=\"go\">1</span>\n</pre></div><p>Argument funkce <code>randrange</code> ud&#xE1;v&#xE1;, kolik mo&#x17E;n&#xFD;ch v&#xFD;sledk&#x16F; m&#x16F;&#x17E;e vr&#xE1;tit.\nFunkce pak vrac&#xED; &#x10D;&#xED;sla od nuly, tak&#x17E;e <code>randrange(6)</code> m&#x16F;&#x17E;e vr&#xE1;tit od 0, 1, 2,\n3, 4 nebo 5. &#x160;estku u&#x17E; ne.</p>\n<h2>N&#xE1;hoda a seznamy</h2>\n<p>Naimportuj si je&#x161;t&#x11B; dv&#x11B; funkce:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"kn\">from</span> <span class=\"nn\">random</span> <span class=\"kn\">import</span> <span class=\"n\">choice</span><span class=\"p\">,</span> <span class=\"n\">shuffle</span>\n</pre></div><p>Prvn&#xED; z&#xA0;nich, <code>choice</code>, um&#xED; vybrat n&#xE1;hodn&#xFD; prvek ze seznamu:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">42</span><span class=\"p\">,</span> <span class=\"mi\">12</span><span class=\"p\">,</span> <span class=\"mi\">19</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">59</span><span class=\"p\">]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">choice</span><span class=\"p\">(</span><span class=\"n\">loterie</span><span class=\"p\">)</span>\n<span class=\"go\">12</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">choice</span><span class=\"p\">(</span><span class=\"n\">loterie</span><span class=\"p\">)</span>\n<span class=\"go\">30</span>\n</pre></div><p>Druh&#xE1;, <code>shuffle</code>, umo&#x17E;n&#xED; seznam n&#xE1;hodn&#x11B; zam&#xED;chat.\nPodobn&#x11B; jako metoda <code>sort</code>, <code>shuffle</code> nic nevrac&#xED; &#x2013; jen potichu zm&#x11B;n&#xED; po&#x159;ad&#xED;:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span> <span class=\"o\">=</span> <span class=\"p\">[</span><span class=\"mi\">3</span><span class=\"p\">,</span> <span class=\"mi\">42</span><span class=\"p\">,</span> <span class=\"mi\">12</span><span class=\"p\">,</span> <span class=\"mi\">19</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"mi\">59</span><span class=\"p\">]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">shuffle</span><span class=\"p\">(</span><span class=\"n\">loterie</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span>\n<span class=\"go\">[12, 59, 19, 42, 3, 30]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">shuffle</span><span class=\"p\">(</span><span class=\"n\">loterie</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"n\">loterie</span>\n<span class=\"go\">[59, 3, 30, 19, 12, 42]</span>\n</pre></div><h2>Shrnut&#xED;</h2>\n<p>Tohle byla docela kr&#xE1;tk&#xE1; sekce &#x2013; ale d&#x16F;le&#x17E;it&#xE1;!</p>\n<ul>\n<li><strong>Import</strong> n&#xE1;m m&#x16F;&#x17E;e zp&#x159;&#xED;stupnit funkce z&#xA0;<strong>modul&#x16F;</strong>,\nkter&#xE9; nejsou k&#xA0;dispozici p&#x159;&#xED;mo v&#xA0;Pythonu.</li>\n<li>Modul <code>random</code> obsahuje funkce na v&#xFD;b&#x11B;r n&#xE1;hodn&#xFD;ch &#x10D;&#xED;sel nebo n&#xE1;hodn&#xFD;ch\nprvk&#x16F; ze seznamu.</li>\n</ul>\n\n\n        "
    }
  }
}