Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Beginners updates from brno #41

Merged
merged 3 commits into from
Apr 27, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion lessons/beginners/and-or/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ else:
```

> [note]
> Všimni si co se stane, když zadáš něco jiného než „ano“ nebo „ne“.
> Všimni si, co se stane, když zadáš něco jiného než „ano“ nebo „ne“.
>
> Proměnná `stastna` nebo `bohata` se nenastaví, a když je ji potom
> potřeba použít, program skončí s chybou.
Expand Down
8 changes: 4 additions & 4 deletions lessons/beginners/circular-imports/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Po rozdělení bude projekt vypadat třeba nějak takhle:
(Šipky mezi moduly znázorňují importování.)

```plain
┌──────────────────╮ ┌───────────────╮ ┌──────────────────╮
┌──────────────────╮ ┌───────────────╮ ┌──────────────────╮
│ ai.py │ │ piskvorky.py │ │ hra.py │
├──────────────────┤ ├───────────────┤ ├──────────────────┤
│ │◀-│ import ai │◀-│ import piskvorky │
Expand Down Expand Up @@ -37,7 +37,7 @@ Můžeš importovat `ai` z `piskvorky` a zároveň
│ │ │ def tah │
└──────────────────┘ │ def tah_hrace │
│ │
└───────────────┘
└───────────────┘
```

Můžeš se na to podívat z pohledu Pythonu,
Expand Down Expand Up @@ -75,7 +75,7 @@ Jak na to? Máš dvě možnosti.

## Organizace modulů podle závislostí

První možnost je importovat funkci `tah` v modulu `ai`
První možnost je definovat funkci `tah` v modulu `ai`
a používat ji odtamtud.
To je jednoduché, ale nerespektuje účel modulu
`ai`, který má obsahovat jenom logiku
Expand All @@ -99,7 +99,7 @@ můžou být potřeba i jinde.
Druhá možnost je definovat nový, sdílený modul,
který se použije jak v `piskvorky.py` tak v `ai.py`.

Takový modul se často se pojmenovává
Takový modul se často pojmenovává
`util.py` (z angl. *utility*, pomůcka, nástroj).

```plain
Expand Down
16 changes: 8 additions & 8 deletions lessons/beginners/cmdline/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
V této lekci se seznámíme s *příkazovou řádkou* – černým okýnkem,
které programátoři používají na zadávání textových příkazů.

Na většinu z toho co příkazová řádka umí můžeš použít i něco jiného – ikonku
Na většinu z toho, co příkazová řádka umí, můžeš použít i něco jiného – ikonku
na ploše, speciální program nebo editor, webovou aplikaci – ale tyhle
vychytávky mají dvě nevýhody:
* často se liší mezi různými počítači, takže s „tvojí“ variantou ti bude moci
Expand Down Expand Up @@ -137,7 +137,7 @@ Příkazová řádka umí soubory ukazovat taky – ale musíš si o to říct.
## Co v tom adresáři je?

Příkaz `ls` nebo `dir` (z angl. *list* – vyjmenovat, resp. *directory* – adresář)
ti vypíše co aktuální adresář obsahuje: všechny soubory,
ti vypíše, co aktuální adresář obsahuje: všechny soubory,
včetně podadresářů, které se v aktuálním adresáři nacházejí.

{% call sidebyside() %}
Expand Down Expand Up @@ -201,6 +201,9 @@ $ mkdir zkouska
> mkdir zkouska
{% endcall %}

Vypiš si teď obsah aktuálního adresáře pomocí `ls` nebo `dir`.
Jeden z vypsaných adresářů bude `zkouska`.

Když je adresář vytvořený, můžeš do něj přejít podobně jako jsi před chvílí
{{gnd('přešel', 'přešla')}} na `Desktop` nebo `Plocha`:

Expand All @@ -210,9 +213,6 @@ $ cd zkouska
> cd zkouska
{% endcall %}

Vypiš si teď obsah aktuálního adresáře pomocí `ls` nebo `dir`.
Jeden z vypsaných adresářů bude `zkouska`.


## V grafickém hledátku

Expand Down Expand Up @@ -247,15 +247,15 @@ Tenhle program je na každém systému jiný:
</div>
</div>

Možná umíš v tomhle programu klikáním „donavigovat“ do adresáře který je
Možná umíš v tomhle programu klikáním „donavigovat“ do adresáře, který je
aktivní v příkazové řádce.
V budoucnu to ale bude složitější, takže bude dobré si vyzkoušet kopírovat text
z příkazové řádky a vložit ho do prohlížeče souborů.

Bohužel se to dělá na každém systému jinak.
A protože známé zkratky <kbd>Ctrl</kbd>+<kbd>C</kbd> a
<kbd>Ctrl</kbd>+<kbd>V</kbd> dělají v příkazové řádce něco jiného než
kopírování, nejspíš se to dělá jinak než jsi zvykl{{gnd('ý', 'á')}}.
kopírování, nejspíš se to dělá jinak, než jsi zvykl{{gnd('ý', 'á')}}.

Nejdřív si pomocí příkazu `cd` nebo `pwd` nech vypsat celé jméno adresáře
`zkouska`:
Expand Down Expand Up @@ -329,7 +329,7 @@ je ale občas jiné než v ostatních pogramech:
Vyzkoušej si, že se v řádce projeví i změny, které na počítači
uděláš jiným způsobem.

V grafickém prohlížeči, který se „dívá“ na stejný adresář který máš aktivní
V grafickém prohlížeči, který se „dívá“ na stejný adresář, jako máš aktivní
v příkazové řádce, vytvoř nový soubor nebo adresář.
Pak se pomocí příkazu `ls` nebo `dir` podívej, že se opravdu vytvořil.
Potom ho v grafickém programu smaž – a v příkazové řádce se ujisti,
Expand Down
2 changes: 1 addition & 1 deletion lessons/beginners/comparisons/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ nebo pusť `python` z příkazové řádky.)
</tr>
</table>

Hodnoty provnání jsou takzvané *booleovské* hodnoty
Hodnoty porovnání jsou takzvané *booleovské* hodnoty
(angl. *boolean*, podle [G. Boolea](http://en.wikipedia.org/wiki/George_Boole)).
V Pythonu je můžeš použít vždycky, když potřebuješ vědět, jestli něco platí
nebo neplatí.
Expand Down
4 changes: 2 additions & 2 deletions lessons/beginners/def/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ nove_slovo = zacatek + novy_znak + konec
Z takového kódu není na první pohled jasné, co přesně dělá.
Zvlášť když kód použiješ ve složitějším programu.

Dá se to vyřešit komentářem: ten, kdo bude program číst, si může přečíst
Dá se to vyřešit komentářem: ten, kdo bude program číst, si může přečíst,
co to má dělat. Samotný složitější kód pak může ignorovat.

```python
Expand Down Expand Up @@ -79,7 +79,7 @@ pak do závorky seznam *parametrů*, které funkce bere, a pak dvojtečku.

Potom následuje odsazené *tělo funkce* – příkazy, které funkce provádí.

Tělo může začít *dokumentačním řetězcem* (angl. *docstring*), který popisuje
Tělo může začít *dokumentačním řetězcem* (angl. *docstring*), který popisuje,
co funkce dělá.
To může být jakýkoli řetězec, ale tradičně se uvozuje třemi uvozovkami
(i v případě, že je jen jednořádkový).
Expand Down
8 changes: 4 additions & 4 deletions lessons/beginners/exceptions/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ Co s tím má chudák funkce `int` dělat?
Není žádná rozumná hodnota, kterou by mohla vrátit.
Převádění tohoto textu na celé číslo nedává smysl.

Až funkce `nacti_cislo` nejlíp „ví“, co se má stát když uživatel nezadá
Až funkce `nacti_cislo` nejlíp „ví“, co se má stát, když uživatel nezadá
číslice.
Stačí se uživatele zeptat znovu!
Kdybys měl{{a}} funkci, která zjistí jestli jsou v řetězci jen číslice,
Kdybys měl{{a}} funkci, která zjistí, jestli jsou v řetězci jen číslice,
mohlo by to fungovat nějak takhle:

```python
Expand Down Expand Up @@ -141,8 +141,8 @@ připraví, může hodně ulehčit hledání chyby.
Zachytávej tedy jenom ty chyby, které *očekáváš* – víš přesně, která chyba může
nastat a proč; máš možnost správně zareagovat.

V našem příkladu to platí pro `ValueError` z funkce `int`: víš že uživatel
nemusí vždy zadat číslo ve správném formátu a víš že správná
V našem příkladu to platí pro `ValueError` z funkce `int`: víš, že uživatel
nemusí vždy zadat číslo ve správném formátu, a víš, že správná
reakce na tuhle situaci je problém vysvětlit a zeptat se znovu.

Co ale dělat, když uživatel chce ukončit program a zmáčkne
Expand Down
2 changes: 1 addition & 1 deletion lessons/beginners/first-steps/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ Na to má Python operátory `//` (podíl) a `%` (zbytek):

Pokud ses dostal{{a}} až sem, gratuluji!
Python máš nejen nainstalovaný, ale taky ti funguje.
Stačí ho už jen zavřít a pak opustit i samotnou příkazovou řádku.
Stačí ho už jen zavřít.
V Pythonu se to dělá pomocí `quit()`, s prázdnými závorkami na konci.

<div class="highlight"><pre>
Expand Down
20 changes: 10 additions & 10 deletions lessons/beginners/functions/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ Třeba program v jazyce APL laik jednoduše ani nenapíše, ani nepřečte:
Expert v APL může být vysoce produktivní, ale Python se zaměřuje spíš na to,
aby se dal snadno naučit.
A tak používá symboly jen pro ty nejčastější operace.
Operátorů které využívají symboly je tak málo, že už jich zhruba půlku znáš!
Operátorů, které využívají symboly, je tak málo, že už jich zhruba půlku znáš!

> [note]
> Pro zajímavost, tady jsou všechny – i ty co ještě neznáš:
>
>
> <!--
> “Operátor” není přesně definovaný termín.
> Tenhle seznam by měl odpovídat https://docs.python.org/3/reference/expressions.html#operator-precedence
Expand Down Expand Up @@ -196,7 +196,7 @@ Funkce `print` sice něco *udělá* – vypíše text
na obrazovku – ale nevrátí žádný smysluplný výsledek, který by zbytek programu
mohl dál zpracovat.

Funkcím, které nic nevrací (jen něco udělají) se občas říká *procedury*.
Funkcím, které nic nevrací (jen něco udělají), se občas říká *procedury*.
V Pythonu není hranice mezi „normální“ funkcí a procedurou příliš ostrá,
ale přesto se hodí tento koncept znát.
Pár příkladů:
Expand All @@ -206,7 +206,7 @@ Pár příkladů:
* Funkce, která vykreslí na obrazovku kolečko, je *procedura*.
Žádnou zajímavou hodnotu programu nevrací.
* Funkce, která spočítá průměrný věk obyvatelstva podle informací ze sčítání
lidu je „normální“. Svůj výsledek vrátí a program s ním může dál pracovat.
lidu, je „normální“. Svůj výsledek vrátí a program s ním může dál pracovat.
* Funkce, která přehraje písničku reproduktorem, je *procedura*.
Nic zajímavého programu nevrací.

Expand All @@ -221,8 +221,8 @@ Pár příkladů:
## Argumenty

Argument je to, co funkci dáš k dispozici. Hodnota, se kterou funkce pracuje.
Chceš-li délku řetězce `Ahoj!`, použiješ funkci `len` která umí vypočítat
délku *jakéhokoli* řetězce a jako argument, v závorkách, jí dáš tu svoji
Chceš-li délku řetězce `Ahoj!`, použiješ funkci `len`, která umí vypočítat
délku *jakéhokoli* řetězce, a jako argument, v závorkách, jí dáš tu svoji
konkrétní hodnotu: `len('Ahoj!')`.

Podobně funkce `print` umí vypsat jakoukoli hodnotu.
Expand Down Expand Up @@ -268,7 +268,7 @@ print(1, 2, 3, 4, sep=', ') # Místo mezery odděluj čárkou
```

Dá se změnit i to, co `print` udělá na konci výpisu.
Normálně přejde na nový řádek, ale argumentem `end` můžeš říct, co se má vypsat
Normálně přejde na nový řádek, ale argumentem `end` můžeš říct, co se má vypsat
*místo toho*.

> [note]
Expand All @@ -289,10 +289,10 @@ Pozor na to, že když nenapíšeš závorky, funkce se nezavolá!
Výraz `len(s)` je *volání funkce*, ale `len` bez závorek označuje
*funkci samotnou*.

Výsledek `len(s)` je číslo; `len` je funkce.
Výsledek výrazu `len(s)` je číslo; výsledek výrazu `len` je samotná funkce `len`.

Čísla můžeš sečítat, můžeš tedy napsat `len(s) + 1`.
Funkce ale sečítat nejde – `len + 1` nedává smysl.
Čísla můžeš sčítat, můžeš tedy napsat `len(s) + 1`.
Funkce ale sčítat nejde – `len + 1` nedává smysl.

Často se ale stane, že závorky prostě zapomeneš.
Zkus si, co dělají následující příklady, a pozorně si přečti výsledky
Expand Down
4 changes: 2 additions & 2 deletions lessons/beginners/hello-world/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Aktivuj si virtuální prostředí.
> [návodu na tvorbu virtuálního prostředí](../venv-setup/); končí `activate`.


Pak a zadej tento příkaz:
Pak zadej tento příkaz:

```console
(venv)$ python ahoj.py
Expand All @@ -71,7 +71,7 @@ Jestli to nefunguje, zkontroluj, že:
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.
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`.

Expand Down
8 changes: 3 additions & 5 deletions lessons/beginners/install-editor/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ pro někoho, kdo se jimi má řídit:
* Nakresli mi beránka!
* <font color="green">Nakresli <big><big>mi</big> <u>beránka</u>!</big></font>

To, že neumí formátování, neznamená že jsou naše editory úplně „hloupé“
I když neumí formátování, neznamená to, že jsou naše editory úplně „hloupé“
nástroje.
Aby se nám programy upravovaly pohodlněji, mají několik vychytávek:

Expand All @@ -36,7 +36,7 @@ Podpora více souborů

Číslování řádků
: Před každým řádkem se ukazuje číslo.
To se bude velice hodit, až Python bude nadávat, že chyba je na řádku 183.
To se bude velice hodit, až Python bude nadávat, že chyba je na řádku 183.

Odsazování
: V Pythonu je důležité, kolika mezerami řádek začíná.
Expand Down Expand Up @@ -99,8 +99,7 @@ Pokud se jeden z nich rozhodneš použít, neuděláš chybu:
Máš-li už svůj oblíbený editor – Vim, Emacs, Geany, apod., použij ten:

* [Ostatní]({{ subpage_url('others') }}) – máš-li jiný editor, zkontroluj
si že je správně nastaven.

si, že je správně nastaven.

### IDE

Expand All @@ -122,4 +121,3 @@ takže nemusí být schopní s pokročilým IDE rychle pomoct.
[PyCharm]: https://www.jetbrains.com/pycharm/
[Eclipse]: https://eclipse.org/
[KDevelop]: https://www.kdevelop.org/

6 changes: 3 additions & 3 deletions lessons/beginners/local-variables/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ print(zamen('kačka', 2, 'p'))
print(zacatek) # NameError
```

Funkce `zamen` jsi napsal{{a}} proto, abys nemusel{{a}} pořád opakovat detaily
Funkci `zamen` jsi napsal{{a}} proto, abys nemusel{{a}} pořád opakovat detaily
záměny písmenka.
Jakmile je jednu nadefinovaná, stačí ji zavolat. Důležité jsou jen jméno
Jakmile je jednou nadefinovaná, stačí ji zavolat. Důležité jsou jen jméno
funkce, parametry a návratová hodnota; na detaily kódu uvnitř můžeš zapomenout.
A to i díky lokálním proměnným, které detaily ve vnitřku funkce trochu líp
izolují od zbytku programu.
Expand Down Expand Up @@ -123,7 +123,7 @@ Jmenují se stejně, ale jsou to dvě různé proměnné.
## Lokální nebo globální?

Pojďme si to ukázat.
Než spustíš tenhle program, zkus předpovědět co bude dělat.
Než spustíš tenhle program, zkus předpovědět, co bude dělat.
Pak ho pusť, a pokud dělal něco jiného, zkus vysvětlit proč.
Pozor na chytáky!

Expand Down
2 changes: 1 addition & 1 deletion lessons/beginners/nested-traceback/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ míst:
Python (a asi ani ty) nemůže vědět, co tím programem programátor myslel,
a kdy by tedy bylo nejlepší chybu opravit.
Ukáže tedy v programu všechna místa, která k chybě vedla.
Je na tobě abys z nich vybral{{a}} to nejvhodnější a zaměřil{{a}} se na něj.
Je na tobě, abys z nich vybral{{a}} to nejvhodnější a zaměřil{{a}} se na něj.

Tahle ukázka je samozřejmě jen teoretická, ale v reálných programech vypadá
hlášení chyb stejně.
Expand Down
2 changes: 1 addition & 1 deletion lessons/beginners/prefer-return/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ print(objem_eliptickeho_valce(3, 5, 3))
Proto je dobré psát funkce, které spočítané hodnoty vrací,
a zpracování výsledku (např. vypsání) nechat na kód mimo funkci.

Další důvod, proč hodnoty spíš vracet než vypisovat je ten, že jedna funkce se
Další důvod, proč hodnoty spíš vracet než vypisovat, je ten, že jedna funkce se
dá použít v různých situacích.
Proceduru s `print` by nešlo rozumně použít tehdy, když nás příkazová
řádka vůbec nezajímá – třeba v grafické hře, webové aplikaci nebo pro ovládání
Expand Down
4 changes: 2 additions & 2 deletions lessons/beginners/recursion/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,10 +93,10 @@ pruzkum(0)
* Zavolá funkci `pruzkum` s hloubkou 10 m:
* Vypíše `Rozhlížím se v hloubce 10 m`
* Zkontroluje, že `10 ≥ 30` (což neplatí)
* Vypíše `Zanořuju se (na 10 m)`
* Vypíše `Zanořuju se (z 10 m)`
* Zavolá funkci `pruzkum` s hloubkou 20 m:
* Zkontroluje, že `20 ≥ 30` (což neplatí)
* Vypíše `Zanořuju se (na 20 m)`
* Vypíše `Zanořuju se (z 20 m)`
* Zavolá funkci `pruzkum` s hloubkou 30 m:
* Zkontroluje, že `30 ≥ 30` (což platí! konečně!)
* Vypíše `Už toho bylo dost!`
Expand Down
2 changes: 1 addition & 1 deletion lessons/beginners/str-index-slice/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ print(retezec[:])

{% filter solution %}
Zápis `retezec[od:do]` vybere *podřetězec* od pozice `od` do pozice `do`.
Když jednu z hodnot vynecháš, vybírá se od začádku, resp. do konce.
Když jednu z hodnot vynecháš, vybírá se od začátku, resp. do konce.

```python
retezec = 'čokoláda'
Expand Down
2 changes: 1 addition & 1 deletion lessons/beginners/str/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ je zápis pro jedno zpětné lomítko.
Někdy potřebuješ řetězce, které obsahují více řádků.
Pythonní řetězce ale můžeš normálně napsat jen na *jeden* řádek.
(Python se tak snaží ulehčit hledání chyby, kdybys koncovou uvozovku
zapoměl{{a}}.)
zapomněl{{a}}.)

Můžeš ale do řetězce znak pro nový řádek vložit pomocí sekvence `\n`:

Expand Down
12 changes: 6 additions & 6 deletions lessons/beginners/venv-setup/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ C:\Users\Helena\{{rootname}}

Teď si vytvoříš *virtuální prostředí* pro Python.

Virtuální prostředí je něco, co zajistí že se všechny počítače budou
Virtuální prostředí je něco, co zajistí, že se všechny počítače budou
chovat zhruba stejně.
Až ho zprovozníme, nebudu už potřebovat instrukce zvlášť pro Linux,
zvlášť pro Windows a zvlášť pro macOS.
Expand All @@ -128,9 +128,9 @@ Na každém systému jinak!

* **Linux**:

Podle toho jak máš Python nainstalovaný bude fungovat jeden z následujících
Podle toho, jak máš Python nainstalovaný, bude fungovat jeden z následujících
příkazů.
Bude je rychlejší vyzkoušet než popsat kdy je který správný,
Bude je rychlejší vyzkoušet než popsat, kdy je který správný,
takže nejdřív zkus:

```console
Expand All @@ -151,9 +151,9 @@ Na každém systému jinak!

* **Windows**:

Podle toho jak máš Python nainstalovaný bude fungovat jeden z následujících
Podle toho, jak máš Python nainstalovaný, bude fungovat jeden z následujících
příkazů.
Bude je rychlejší vyzkoušet než popsat kdy je který správný,
Bude je rychlejší vyzkoušet než popsat, kdy je který správný,
takže nejdřív zkus:

```doscon
Expand Down Expand Up @@ -217,6 +217,6 @@ Tak poznáš, že je virtuální prostředí *aktivní*.

Aktivační příkaz si zapiš.

Vždycky, když pustíš příkazovou řádku ve které budeš zkoušet své programy,
Vždycky, když pustíš příkazovou řádku, ve které budeš zkoušet své programy,
budeš muset pomocí `cd` přepnout do `{{rootname}}` a zadat tento
aktivační příkaz.