Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions lessons/adm/close-paren/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Zapomenutá závorka

Občas se stane, že v interaktivním režimu Pythonu zapomeneš uzavřít závorku:

```python
>>> quit(
...
```

Python pak se pomocí `...` ptá na pokračování příkazu.
Python totiž umožňuje rozepsat případný obsah závorek na víc řádků
a dokud závorku neukončíš (nebo nevyvoláš chybu), neukončí.

Cesta ven je klávesová zkratka <kbd>Ctrl</kbd>+<kbd>C</kbd>,
která ukončí zadávaný příkaz a nechá tě zadat nový:

```python
>>> quit(
... # (Zmáčknu Ctrl+C)
KeyboardInterrupt
>>>
```

V „grafických“ programech typicky <kbd>Ctrl</kbd>+<kbd>C</kbd>
znamená *kopírovat*, ale v příkazové řádce má starší význam: ukončení.
Python ukončení pomocí klávesové zkratky nazývá `KeyboardInterrupt`:
5 changes: 5 additions & 0 deletions lessons/adm/close-paren/info.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
title: Neuzavřená závorka
style: md
attribution:
- Napsal Petr Viktorin, 2021.
license: cc-by-sa-40
47 changes: 25 additions & 22 deletions lessons/beginners/comparisons/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,51 +62,54 @@ nebo pusť `python` z příkazové řádky.)
</tr>
</table>

Hodnoty provná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í.
Jsou jenom dvě – buď `True` (pravda), nebo `False` (nepravda).

Jako všechny hodnoty, `True` a `False` můžeš přiřadit do proměnných:
Podobně jako u jiných operátorů se pomocí `==`, `!=` atd. tvoří výrazy,
které Python umí vyhodnotit.

```python
pravda = 1 < 3
print(pravda)

nepravda = 1 == 3
print(nepravda)
vysledek = 3 > 0
# ╰─┬─╯
# ano (pravda, True)
print(vysledek)

vysledek = 3 == 0
# ╰─┬──╯
# ne (nepravda, False)
print(vysledek)
```

Výsledky provnání jsou takzvané *booleovské* hodnoty
(angl. *boolean*, podle [G. Boolea](http://en.wikipedia.org/wiki/George_Boole)).
Jmenují se `True` (pravda), nebo `False` (nepravda).
V Pythonu je můžeš použít vždycky, když potřebuješ vědět, jestli něco platí
nebo neplatí.

> [note]
> Všimni si, že rovnost zjistíš pomocí dvou rovnítek: `3 == 3`.
> Jedno rovnítko přiřazuje do proměnné; dvě rovnítka porovnávají.

Slova <code>True</code> a <code>False</code> můžeš
v programu použít i přímo,
Slova `True` a `False` můžeš v programu použít i přímo,
jen si dej pozor na velikost písmen:

```python
print(True)
print(False)
uzivatel_je_administrator = False
```

## Podmínky

Teď oprášíme program na výpočet obvodu a obsahu.

Otevři si v editoru nový soubor.
Jestli ještě v adresáři, kde máš soubory ke kurzům Pythonu,
nemáš adresář pro tuto lekci (třeba `02`), vytvoř si ho.
Nový soubor ulož do něj pod jménem `if.py`.
Otevři si v editoru nový soubor a ulož ho pod jménem `if.py`.
Zkontroluj, že je v adresáři pro tuto lekci.

Do souboru pak napiš následující program:

```python
strana = float(input('Zadej stranu čtverce v centimetrech: '))
# Tento program počítá obvod a obsah čtverce.

strana = float(input('Zadej stranu čtverce v centimetrech: '))
print('Obvod čtverce se stranou', strana, 'je', 4 * strana, 'cm')
print('Obsah čtverce se stranou', strana, 'je', strana * strana, 'cm2')
```
print('Obsah čtverce se stranou', strana, 'je', strana * strana, 'cm2')```

Program spusť. Funguje?

Expand Down
76 changes: 41 additions & 35 deletions lessons/beginners/expressions/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,36 @@ vysledek = 9 / 4
vysledek = 2.25
```

Funguje to i u složitých výrazů.
Python se složitými výrazy nemá problém.
Jen člověk, který program čte či píše, se v nich může lehce ztratit.
Python dodržuje *prioritu operátorů*: např. násobení vyhodnotí dřív než
sečítání.
Záleží přitom vždy na operátoru (znaménku).
Násobení čísel (`*`) a opakování řetězců (taky `*`) má vyšší prioritu;
sečítání čísel (`+`) a spojování řetězců (taky `+`) ji má nižší.

```python
vysledek = 4 + 2 * 3
# ╰─┬─╯
vysledek = 4 + 6
# ╰──┬──╯
vysledek = 10

vyzva = "Volejte třikrát: " + "Sláva! " * 3
# ╰─────┬─────╯
vyzva = "Volejte třikrát: " + "Sláva! Sláva! Sláva! "
# ╰────────────────────┬──────────────────────╯
vyzva = "Volejte třikrát: Sláva! Sláva! Sláva! "
```

Python nemá problém se složitými výrazy – vyhodnocování funguje vždy stejně.
Jen člověk, který program čte či píše, se ve výrazech může lehce ztratit.
Když opravdu potřebuješ napsat složitý výraz, je dobré jej rozdělit na několik
menších nebo vysvětlit pomocí komentáře.

Je ale dobré mít povědomí o tom, jak složité výrazy „fungují“,
aby ses jich nemusel{{a}} bát.
Měl{{a}} bys být schopn{{gnd('ý', 'á')}} vysvětlit, co se stane,
když se Pythonu zeptáš, kolik je -<var>b</var> + (<var>b</var>² +
4<var>a</var><var>c</var>)⁰·⁵ / (2<var>a</var>), abys pak věděl{{a}}, co za
když se Pythonu zeptáš, kolik je (-<var>b</var> + (<var>b</var>² -
4<var>a</var><var>c</var>)⁰·⁵) / (2<var>a</var>), abys pak věděl{{a}}, co za
tebe Python dělá.

```python
Expand All @@ -56,37 +75,24 @@ b = 5
c = 3


x = -b + (b ** 2 + 4 * a * c) ** 0.5 / (2 * a)
# | | | | |
x = -5 + (5 ** 2 + 4 * 2 * 3) ** 0.5 / (2 * 2)
# ╰──┬─╯ ╰─┬─╯ ╰──┬──╯
x = -5 + ( 25 + 8 * 3) ** 0.5 / 4
# ╰────┬─╯
x = -5 + ( 25 + 24 ) ** 0.5 / 4
# ╰───────┬──────────╯
x = -5 + 49 ** 0.5 / 4
# ╰──────┬──────────╯
x = -5 + 7.0 / 4
# ╰─────────────┬────╯
x = -5 + 1.75
# ╰──────────────┬───────────────────╯
x = -3.25
x = (-b + (b ** 2 - 4 * a * c) ** 0.5) / (2 * a)
# | | | | |
x = (-5 + (5 ** 2 - 4 * 2 * 3) ** 0.5) / (2 * 2)
# ╰──┬─╯ ╰─┬─╯ ╰──┬──╯
x = (-5 + ( 25 - 8 * 3) ** 0.5) / 4
# ───┬─╯
x = (-5 + ( 25 - 24 ) ** 0.5) / 4
# ╰───────┬──────────╯
x = (-5 + 1 ** 0.5) / 4
# ╰──────┬──────────╯
x = (-5 + 1) / 4
# ╰────────────┬──────╯
x = -4 / 4
# ╰────────────────────────╯
x = -1.0
```

Výrazy se používají na více místech Pythonu než jen v přiřazování
do proměnných.
Třeba podmínka u `if` je taky výraz a vyhodnocuje se stejně jako ostatní
výrazy:

```python
strana = -5

if strana <= 0:
print("Strana musí být kladná!")
```

```python
if strana <= 0:
# ╰──────┬──╯
if True :
```
Třeba pro porovnání dvou hodnot.
Ale o tom zase příště.
43 changes: 14 additions & 29 deletions lessons/beginners/hello-world/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@

Psaní příkazů přímo v Pythonu, <em>interaktivně</em>,
má jednu velkou nevýhodu:
to, co napíšeš, se ztratí, jakmile zavřeš okno příkazové řádky.
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
Otevři editor.
(Ten bys měl{{a}} mít nainstalovaný, jestli ne, instrukce jsou v [předchozí
lekci]({{ lesson_url('beginners/install-editor') }}).)

Expand All @@ -24,17 +24,24 @@ 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`).
podle čísla lekce: `01`.
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“.

Po uložení s příponou `.py` by měl editor program obarvit: text v uvozovkách
by měl mít jinou barvu než slovo `print`.
Barvy napovídají, jak bude Python souboru rozumět.
Až si na ně zvykneš, můžou ti pomoci najít překlepy.


## Spuštění

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

> [note]
> S příkazovou řádkou jsme se seznámil{{gnd('i', 'y', both='i')}}
Expand All @@ -47,15 +54,16 @@ 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í](../venv-setup/); končí `activate`.

Pak pomocí `cd 01` zajdi do adresáře s programem.

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

```console
(venv)$ python ahoj.py
```

Pokud se vypíše hláška `Ahoj světe!`, gratuluji!
Napsal{{a}} jsi svůj první program v Pythonu!
Napsal{{a}} a spustil{{a}} jsi svůj první program v Pythonu!

Jestli to nefunguje, zkontroluj, že:

Expand All @@ -81,26 +89,3 @@ kouče.
{%- else -%}
zkušenějšího programátora. <!-- XXX: where to direct people? -->
{% endif %}


> [style-note] 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:
>
> ```python
> 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:
>
> ```python
> 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.
Loading