Skip to content

Commit 3a2758c

Browse files
committed
Refine the intro to Python
1 parent a6f2cc1 commit 3a2758c

File tree

12 files changed

+848
-162
lines changed

12 files changed

+848
-162
lines changed

lessons/fast-track/bool/index.md

Lines changed: 49 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,22 @@ Funguje to i se složitějšími výrazy:
2121
True
2222
```
2323

24-
„Větší než“ a „menší než“ používají značky známé z matematiky.
25-
Chceš-li se ale zeptat, jestli jsou dvě čísla stejná, je to trochu jiné:
24+
„Větší než“ a „menší než“ jsou značky známé z matematiky.
25+
Chceš-li se ale zeptat, jestli jsou dvě čísla stejná, je potřba použít
26+
trochu jiný zápis:
2627

2728
``` pycon
2829
>>> 1 == 1
2930
True
3031
```
3132

32-
Jedno rovnítko `=` používáme pro přiřazení hodnoty do proměnné.
33-
Když chceš zkontrolovat, jestli se věci navzájem rovnají, vždy, **vždy** musíš dát dvě rovnítka `==`.
33+
Jedno rovnítko `=` používáme pro *přiřazení* hodnoty do proměnné.
34+
Když chceš zkontrolovat, jestli se věci navzájem *rovnají*, vždy, **vždy**
35+
musíš dát dvě rovnítka `==`.
3436

35-
Další možnosti porovnávání jsou nerovnost (≠), větší než (≤) a meší než (≥).
36-
Většina lidí tyhle symboly nemá na klávesnici, a tak se používá `!=`, `<=`
37+
Další možnosti porovnávání jsou nerovnost (≠), větší nebo rovno (≤)
38+
a meší nebo rovno (≥).
39+
Většina lidí tyhle symboly nemá na klávesnici, a tak Python používá `!=`, `<=`
3740
a `>=`.
3841

3942
``` pycon
@@ -45,9 +48,35 @@ False
4548
True
4649
```
4750

51+
Už jsi někdy slyšel{{a}} výraz „srovnávat jablka a hrušky“? Zkusme v Pythonu ekvivalent:
52+
53+
``` pycon
54+
>>> 1 > 'krajta'
55+
Traceback (most recent call last):
56+
File "<stdin>", line 1, in <module>
57+
TypeError: '>' not supported between instances of 'int' and 'str'
58+
```
59+
60+
Stejně jako nelze srovnávat „jablka a hrušky“,
61+
Python není schopen porovnávat řetězce (`str`) a čísla (`int`).
62+
Místo toho zobrazí `TypeError` a říká nám, že tyto dva typy nelze porovnat.
63+
64+
Co se stane, když v minulé ukázce zaměníš `>` za `==`?
65+
66+
{% filter solution %}
67+
```pycon
68+
>>> 1 == 'krajta'
69+
False
70+
```
71+
72+
Jablka a hrušky nemůžeš porovnávat, ale můžeš si potvrdit že jsou to dvě různé
73+
věci.
74+
{% endfilter %}
75+
76+
4877
## Logika
4978

50-
Chceš zkusit ještě něco? Zkus tohle:
79+
Chceš zkusit ještě něco? Zadej tohle:
5180

5281
``` pycon
5382
>>> 6 > 2 and 2 < 3
@@ -63,32 +92,20 @@ V Pythonu můžeš zkombinovat několik porovnání do jednoho!
6392
* Pokud použiješ operátor `and`, obě strany musí být pravdivé, aby byl celý výraz pravdivý.
6493
* Pokud použiješ operátor `or`, stačí aby jen jedna strana z porovnání byla pravdivá.
6594

66-
Už jsi někdy slyšel{{a}} výraz „srovnávat jablka a hrušky“? Zkusme v Pythonu ekvivalent:
67-
68-
``` pycon
69-
>>> 1 > 'krajta'
70-
Traceback (most recent call last):
71-
File "<stdin>", line 1, in <module>
72-
TypeError: '>' not supported between instances of 'int' and 'str'
73-
```
74-
75-
Stejně jako nelze srovnávat „jablka a hrušky“,
76-
Python není schopen porovnávat řetězce (`str`) a čísla (`int`).
77-
Místo toho zobrazí `TypeError` a říká nám, že tyto dva typy nelze porovnat.
78-
7995

8096
## Pravdivostní hodnoty
8197

8298
Mimochodem, právě ses dozvěděl{{a}} o novém typu objektu v Pythonu.
83-
Říká se mu *pravdivostní hodnota*, nebo častěji anglicky *boolean*.
99+
Podobně jako máme řetězec, číslo, seznam nebo slovník existuje
100+
*pravdivostní hodnota*, nebo častěji anglicky *boolean*.
84101

85102
Může mít jednu z dvou hodnot: `True` a `False`.
86103

87104
Aby Python pochopil, že se jedná o tento typ,
88105
je potřeba dávat pozor na velikost písmen.
89106
`true`, `TRUE`, `tRUE` nebude fungovat – jedině `True` je správně.
90107

91-
Jako každou hodnotu, i pravdivostní hodnotu můžeš uložit do proměnné:
108+
Jako každou hodnotu, i *boolean* můžeš uložit do proměnné:
92109

93110
``` pycon
94111
>>> a = True
@@ -103,3 +120,13 @@ Stejně tak můžeš uložit i výsledek porovnání:
103120
>>> a
104121
False
105122
```
123+
124+
125+
## Shrnutí
126+
127+
V této sekci ses dozvěděl{{a}}:
128+
129+
* V Pythonu můžeš **porovnávat** pomocí operátorů `>`, `>=`, `==` `<=`, `<`, `!=`
130+
* Operátory `and` a `or` umí **zkombinovat** dvě porovnání.
131+
* **Boolean** (pravdivostní hodnota) je typ, který může mít jednu ze dvou
132+
hodnot: `True` (pravda) nebo `False` (nepravda).

lessons/fast-track/def/index.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ Třeba funkce, která tě pozdraví, by měla:
1313
* Vypsat „jak se máš?“
1414

1515
Definice funkce v Pythonu začíná klíčovým slovem `def`,
16-
dále je uveden název a závorky (zatím prázdné).
17-
Pak jako po `if` dvojtečka, a odsazené příkazy,
16+
dále je uveden název a následují závorky (zatím prázdné).
17+
Pak je jako po `if` dvojtečka a odsazené příkazy,
1818
které má funkce provést.
1919

2020
```python
@@ -73,16 +73,18 @@ NameError: name 'pozdrav' is not defined
7373
Python si stěžuje na `NameError` – nezná nic jménem `pozdrav`.
7474

7575
Python totiž program čte odzhora dolů.
76-
Až příkazem `def` se „naučí" jak zdravit
76+
Až příkazem `def` se „naučí" jak zdravit.
7777
Předtím, než se k příkazu `def` dostane, funkce neexistuje.
7878
{% endfilter %}
7979

8080
## Parametry
8181

82+
Tvoje funkce se dá volat jen jako `pozdrav()`.
8283
Funkce jako `len('slovo')` a `print(1 + 2)` umí navíc pracovat s hodnotou.
8384

84-
Pojďme napisať funkciu, ktorá ťa pozdraví menom.
85+
Poďme napisať funkciu, ktorá ťa pozdraví menom.
8586
(Uľahčíme si to použitím jazyka, ktorý nepoužíva piaty pád.)
87+
{# XXX: Je to správně slovensky? #}
8688

8789
```python
8890
def pozdrav(meno):
@@ -138,3 +140,11 @@ pozdrav('Ola')
138140
pozdrav('Soňa')
139141
```
140142

143+
144+
## Shrnutí
145+
146+
Co bylo nového tentokrát?
147+
148+
* **Funkce** umožňuje pojmenovat nějkolik příkazů, a pak je zavolat najednou.
149+
* **Parametry** funkce, hodnoty se kterými funkce pracuje,
150+
se zadávají v závorkách.

lessons/fast-track/dict/index.md

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,18 @@ Klíč a hodnota jsou oddělené dvojtečkou,
2525
jednotlivé dvojice se od sebe oddělují čárkou,
2626
a celý slovník je uzavřený ve složených závorkách.
2727

28-
Když budeš chtít v takovém slovníku něco najít, potřebuješ vědět, co hledat.
29-
Konkrétně *klíč*.
30-
Pomocí hranatých závorek můžeš zjistit hodnotu, která odpovídá danému klíči:
28+
Když budeš chtít v takovém slovníku něco najít, potřebuješ vědět co hledat.
29+
Potřebuješ *klíč*.
30+
Pomocí hranatých závorek můžeš zjistit hodnotu, která danému klíči odpovídá:
3131

3232

3333
``` pycon
3434
>>> slovnik['Jablko']
3535
'Apple'
3636
```
3737

38-
Je to podobné jako u seznamů, jen v hranatých závorkách není pořadí prvku,
39-
ale klíč.
40-
{# XXX: Slicing taky nejde #}
38+
Je to podobné jako u seznamů, jen v hranatých závorkách není index
39+
(pořadí prvku) nebo rozmezí s dvojtečkou, ale klíč.
4140

4241
> [note]
4342
> Naopak to nejde – slovník neumožňuje podle hodnoty přímo zjistit klíč.
@@ -135,11 +134,10 @@ Verča se přestěhovala do zahraničí a má nové číslo: `+897 3788509`.
135134

136135
## Shrnutí
137136

138-
Skvělé! Nyní víš o programování hodně. V této poslední části jsi poznal{{a}}:
137+
Skvělé! Co víš o slovnících:
139138

140-
* **chyby** - hlášky které Python zobrazí když nerozumí příkazu který jsi zadal{{a}} nebo ho neumí splnit
141-
* **proměnné** - názvy pro objekty, které umožňují psát čitelnější kód
142-
* **seznam** - sekvence objektů uložených v určitém pořadí
143-
* **slovník** - sbírka záznamů klíč–hodnota
139+
* **Záznam** se skládá z **klíče** a **hodnoty**.
140+
* Ve slovníku se hledá pomocí **klíče**.
141+
* Záznamy se dají přepsat, přidat, nebo pomocí `del` smazat.
144142

145143
Jsi připraven{{a}} na další část?

lessons/fast-track/for/index.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Programátoři se neradi opakují.
44
Programování je o automatizaci: nebudeme zdravit každého člověka zvlášť,
55
vezměme seznam padesáti lidí a pozdravíme je všechny najednou!
66

7-
(Hm, někteří programátoři nejsou moc sociálně nadaní.
7+
(No, někteří programátoři asi nejsou moc sociálně nadaní.
88
Ale jinde se ta automatizace fakt hodí!)
99

1010
Ještě si vzpomínáš na seznamy?
@@ -63,14 +63,15 @@ Když chceš něco 200-krát zopakovat, napiš:
6363

6464
```python
6565
for i in range(200):
66-
print("Nebudu házet igelit do táboráku!")
66+
print("Nebudu nikdy házet igelit do táboráku!")
6767
```
6868

6969
Jak to funguje?
7070
`for i in range(X)` se dá přeložit jako „pro každé číslo
7171
od nuly do <var>X</var>“.
72-
Do proměnné `i` Python uloží, pokolikáté cyklem prochází – počínaje,
73-
v programátorském stylu, od nuly:
72+
Funkce `range` onu posloupnost čísel od nuly do <var>X</var> vytvoří.
73+
Do proměnné `i` Python postupně uloží každé číslo, podle toho po kolikáté
74+
cyklem prochází.
7475

7576
```python
7677
for i in range(5):
@@ -84,25 +85,24 @@ for i in range(5):
8485
4
8586
```
8687

87-
`range` je funkce, která vytvoří seznam s posloupností čísel (tato čísla zadáváš jako parametry funkce).
88+
Všimni si, že samotné `5` není zahrnuto ve výsledku:
89+
`range(5)` počítá od 0 do 4.
90+
Když počítáš od nuly a chceš pět čísel, skončíš u čtyřky.
8891

89-
Všimni si, že druhé z těchto dvou čísel není zahrnuto v seznamu, který je výstupem Pythonu (`range (1, 6)` počítá od 1 do 5, ale nezahrnuje číslo 6). To je proto, že "range" je z poloviny otevřený, čímž myslíme, že obsahuje první hodnotu, ale ne poslední.
9092

9193
## Shrnutí
9294

9395
A je to.
9496
*Jsi naprosto skvěl{{gnd('ý', 'á')}}!*
95-
Tohle byla složitá kapitola, takže bys na sebe měl{{a}} být hrd{{gnd('ý', 'á')}}.
97+
Tohle byla složitá lekce, takže bys na sebe měl{{a}} být hrd{{gnd('ý', 'á')}}.
9698
My jsme na tebe velmi hrdí za to, že ses dostal{{a}} tak daleko!
9799

98100
Naučil{{a}} ses:
99101

100-
* **Definice funkcí** jak pojmenovat pár příkazů
101-
* **Cykly** – jak opakovat nějaký postup několikrát po sobě
102+
* **Cyklus** je způsob, jak opakovat nějaký postup několikrát po sobě
103+
* `range` pomáhá když potřebuješ určitý konkrétní počet opakování.
102104

103105
Můžeš si jít krátce odpočinout – protáhnout se, projít se,
104106
zavřít oči – než se pustíme do další kapitoly. :)
105107

106108
🧁
107-
108-
{# XXX: range #}

lessons/fast-track/if/index.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Ještě lepší program by ale:
5858
* Zeptá se na tajné heslo
5959
* Když je heslo správné:
6060
* Pustí uživatele dovnitř
61-
* Jinak:
61+
* Jinak <small>(tedy pokud heslo nebylo správné)</small>:
6262
* Spustí alarm
6363

6464
K tomu má Python příkaz `else` – „jinak“:
@@ -126,11 +126,9 @@ příslušnou hlášku a další možnosti přeskočí.
126126

127127
## Shrnutí
128128

129-
V posledních třech cvičeních ses dozvěděl{{a}} o:
130-
131-
* **Porovnání věcí** - v Pythonu můžeš porovnávat věci pomocí operátorů `>`, `>=`, `==` `<=`, `<`, `!=` a `and`, `or`
132-
* **Pravdivostní hodnoty / Boolean** - typ, který může mít pouze jednu ze dvou hodnot: `True` nebo `False`
133-
* **Ukládání do souborů** - pokud uložíš kód do souboru, můžeš spouštět větší programy
134-
* **if – elif – else** - příkazy, které umožňují spouštět kód pouze v případě, kdy jsou splněny určité podmínky.
129+
Co jsi viděl{{a}} v této lekci?
135130

136-
Čas na předposlední část této kapitoly!
131+
* Příkazy **if** (pokud), **elif** (jinak, pokud) a **else** (jinak)
132+
podmiňují jiné příkazy.
133+
* **Odsazení** se používá pro podmíněné příkazy, které následují po
134+
`if` apod..

0 commit comments

Comments
 (0)