Skip to content

Commit 5bae2fa

Browse files
committed
Split the fast-track/python-basics into manymany small chapters
1 parent 5ae599c commit 5bae2fa

File tree

24 files changed

+1525
-1417
lines changed

24 files changed

+1525
-1417
lines changed

courses/snake/info.yml

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,23 @@ plan:
4040
materials:
4141
- lesson: beginners/cmdline
4242
- lesson: beginners/install
43-
- title: Úvod do Pythonu
43+
- lesson: beginners/install-editor
44+
- title: Workshop
4445
slug: intro
4546
materials:
4647
- title: Úvod
4748
url: null
48-
- lesson: beginners/cmdline
49-
title: Příkazová řádka (*)
50-
- title: Instalalce Pygletu
51-
url: null
52-
- title: Základy Pythonu
53-
lesson: fast-track/python-basics
49+
- lesson: fast-track/repl
50+
- lesson: fast-track/str
51+
- lesson: fast-track/conversion
52+
- lesson: fast-track/variables
53+
- lesson: fast-track/list
54+
- lesson: fast-track/dict
55+
- lesson: fast-track/bool
56+
- lesson: fast-track/script
57+
- lesson: fast-track/if
58+
- lesson: fast-track/def
59+
- lesson: fast-track/for
5460
- title: "Doplnění: list slicing, del, n-tice, zip()"
5561
url: null
5662
- lesson: intro/pyglet

lessons/fast-track/bool/index.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
# Porovnávání věcí
2+
3+
Programátoři často porovnávají různé hodnoty. Pojďme se podívat, jak na to.
4+
5+
``` pycon
6+
>>> 5 > 2
7+
True
8+
>>> 5 > 8
9+
False
10+
>>> 5 < 8
11+
True
12+
```
13+
14+
Když se Pythonu zeptáš, jestli je jedno číslo větší než druhé, odpoví ti
15+
`True` (pravda) nebo `False` (nepravda).
16+
17+
Funguje to i se složitějšími výrazy:
18+
19+
``` pycon
20+
>>> 5 > 2 * 2
21+
True
22+
```
23+
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é:
26+
27+
``` pycon
28+
>>> 1 == 1
29+
True
30+
```
31+
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 `==`.
34+
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+
a `>=`.
38+
39+
``` pycon
40+
>>> 5 != 2
41+
True
42+
>>> 3 <= 2
43+
False
44+
>>> 6 >= 12 / 2
45+
True
46+
```
47+
48+
## Logika
49+
50+
Chceš zkusit ještě něco? Zkus tohle:
51+
52+
``` pycon
53+
>>> 6 > 2 and 2 < 3
54+
True
55+
>>> 3 > 2 and 2 < 1
56+
False
57+
>>> 3 > 2 or 2 < 1
58+
True
59+
```
60+
61+
V Pythonu můžeš zkombinovat několik porovnání do jednoho!
62+
63+
* Pokud použiješ operátor `and`, obě strany musí být pravdivé, aby byl celý výraz pravdivý.
64+
* Pokud použiješ operátor `or`, stačí aby jen jedna strana z porovnání byla pravdivá.
65+
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+
79+
80+
## Pravdivostní hodnoty
81+
82+
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*.
84+
85+
Může mít jednu z dvou hodnot: `True` a `False`.
86+
87+
Aby Python pochopil, že se jedná o tento typ,
88+
je potřeba dávat pozor na velikost písmen.
89+
`true`, `TRUE`, `tRUE` nebude fungovat – jedině `True` je správně.
90+
91+
Jako každou hodnotu, i pravdivostní hodnotu můžeš uložit do proměnné:
92+
93+
``` pycon
94+
>>> a = True
95+
>>> a
96+
True
97+
```
98+
99+
Stejně tak můžeš uložit i výsledek porovnání:
100+
101+
```
102+
>>> a = 2 > 5
103+
>>> a
104+
False
105+
```

lessons/fast-track/bool/info.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
title: Porovnávání a logika
2+
style: md
3+
attribution:
4+
- Založeno na materiálech [DjangoGirls](https://djangogirls.org/).
5+
- Část této kapitoly je založena na kurzu [Geek Girls Carrots](https://github.com/ggcarrots/django-carrots).
6+
- |
7+
Původní DjangoGirls tutoriál přeložila do češtiny skupina dobrovolníků.
8+
Poděkování patří hlavně: Davidovi (dakf), Kristýně Kumpánové,
9+
Veronice Gabrielové, Tomáši Ehrlichovi, Aničce Jaegerové,
10+
Matějovi Stuchlíkovi, Filipovi Sivákovi a Juraji M. Bezručkovi.
11+
- Pro PyLadies CZ upravil Petr Viktorin, 2018.
12+
license: cc-by-sa-40
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Převádění typů
2+
3+
Pojď zkusit něco nového: zjistit délku čísla stejným způsobem,
4+
jakým jsme zjišťovali délku našeho jména.
5+
Zadej `len(304023)` a stiskni <kbd>Enter</kbd>:
6+
7+
``` pycon
8+
>>> len(304023)
9+
Traceback (most recent call last):
10+
File "<stdin>", line 1, in <module>
11+
TypeError: object of type 'int' has no len()
12+
```
13+
14+
{# XXX: tohle nebude první chyba... #}
15+
Zobrazila se ti naše první chyba!
16+
Ta říká, že objekty typu `int` (zkratka anglického *integer*, celé číslo)
17+
nemají délku.
18+
Tak co můžeme udělat teď?
19+
Možná můžeme zkusit napsat naše číslo jako řetězec?
20+
Řetězce mají délky, že?
21+
22+
```pycon
23+
>>> len("304023")
24+
6
25+
```
26+
27+
Existuje i funkce, která *převede* číslo na řetězec. Jmenuje se `str`:
28+
29+
```pycon
30+
>>> str(304023)
31+
"304023"
32+
>>> len(str(304023))
33+
6
34+
```
35+
36+
Podobně funkce `int` převádí věci na celá čísla:
37+
38+
```pycon
39+
>>> int("304023")
40+
```
41+
42+
Můžeš převést čísla na text, ale nemůžeš jen tak převést text na čísla.
43+
Co by se stalo, kdyby ses pokusil{{a}} na číslo převést řetězec, ve kterém
44+
nejsou číslice?
45+
46+
{% filter solution() %}
47+
``` pycon
48+
>>> int('hello')
49+
Traceback (most recent call last):
50+
File "<stdin>", line 1, in <module>
51+
ValueError: invalid literal for int() with base 10: 'ahoj'
52+
```
53+
{% endfilter %}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
title: Převádění typů
2+
style: md
3+
attribution:
4+
- Založeno na materiálech [DjangoGirls](https://djangogirls.org/).
5+
- Část této kapitoly je založena na kurzu [Geek Girls Carrots](https://github.com/ggcarrots/django-carrots).
6+
- |
7+
Původní DjangoGirls tutoriál přeložila do češtiny skupina dobrovolníků.
8+
Poděkování patří hlavně: Davidovi (dakf), Kristýně Kumpánové,
9+
Veronice Gabrielové, Tomáši Ehrlichovi, Aničce Jaegerové,
10+
Matějovi Stuchlíkovi, Filipovi Sivákovi a Juraji M. Bezručkovi.
11+
- Pro PyLadies CZ upravil Petr Viktorin, 2018.
12+
license: cc-by-sa-40

lessons/fast-track/def/index.md

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
# Vlastní funkce
2+
3+
Pamatuješ na funkce `len()` a `print()`?
4+
Jsou jako kouzelná zaříkadla z knihy vázané v kůži: když víš jak se jmenují
5+
a umíš je správně {# XXX: <s>vyslovit</s> #}napsat, něco pro tebe udělají.
6+
7+
Teď postoupíme na další úroveň: vymyslíme si vlastní zaříkadla!
8+
Jak? Budeme kombinovat příkazy, které už známe.
9+
10+
Třeba funkce, která tě pozdraví, by měla:
11+
12+
* Vypsat „ahoj!“
13+
* Vypsat „jak se máš?“
14+
15+
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,
18+
které má funkce provést.
19+
20+
```python
21+
def pozdrav():
22+
print('Ahoj!')
23+
print('Jak se máš?')
24+
```
25+
26+
Naše první funkce je připravena!
27+
28+
Když ale tenhle program spustíš, nic neudělá.
29+
To proto, že tohle je jen *definice* funkce.
30+
Python teď ví jak pozdravit – ale neřeklo se, že to má udělat!
31+
32+
Na konec programu přidej volání.
33+
To už není součást funkce, ale pokračování samotného programu.
34+
Proto nesmí být odsazené:
35+
36+
```python
37+
def pozdrav():
38+
print('Ahoj!')
39+
print('Jak se máš?')
40+
41+
pozdrav()
42+
```
43+
44+
Co se stane, když funkci zavoláš několikrát po sobě?
45+
46+
```python
47+
def pozdrav():
48+
print('Ahoj!')
49+
print('Jak se máš?')
50+
51+
pozdrav()
52+
pozdrav()
53+
pozdrav()
54+
```
55+
56+
Co se stane, když volání dáš *nad* definici funkce, místo na konec programu?
57+
58+
```python
59+
pozdrav()
60+
61+
def pozdrav():
62+
print('Ahoj!')
63+
print('Jak se máš?')
64+
```
65+
66+
{% filter solution %}
67+
``` pycon
68+
Traceback (most recent call last):
69+
File "<stdin>", line 1, in <module>
70+
NameError: name 'pozdrav' is not defined
71+
```
72+
73+
Python si stěžuje na `NameError` – nezná nic jménem `pozdrav`.
74+
75+
Python totiž program čte odzhora dolů.
76+
Až příkazem `def` se „naučí" jak zdravit –
77+
Předtím, než se k příkazu `def` dostane, funkce neexistuje.
78+
{% endfilter %}
79+
80+
## Parametry
81+
82+
Funkce jako `len('slovo')` a `print(1 + 2)` umí navíc pracovat s hodnotou.
83+
84+
Pojďme napisať funkciu, ktorá ťa pozdraví menom.
85+
(Uľahčíme si to použitím jazyka, ktorý nepoužíva piaty pád.)
86+
87+
```python
88+
def pozdrav(meno):
89+
print('Vitam ťa,', meno)
90+
91+
pozdrav('Ola')
92+
pozdrav('Soňa')
93+
pozdrav('Hubert')
94+
pozdrav('Anička')
95+
```
96+
97+
Jak to funguje?
98+
V definici funkce uvedeš závorkách *parametr* – jméno proměnné se kterou bude
99+
funkce pracovat.
100+
Hodnotu pro tenhle parametr pak zadáš při volání funkce.
101+
102+
Zvládneš napsat program, který se zeptá na jméno a pak tě pozdraví?
103+
104+
{% filter solution %}
105+
```python
106+
def pozdrav(meno):
107+
print('Vitam ťa,', meno)
108+
109+
pozdrav(input('Jak se jmenuješ? '))
110+
```
111+
{% endfilter %}
112+
113+
Co se stane, když funkci zavoláš bez hodnoty pro parametr?
114+
115+
{% filter solution %}
116+
``` pycon
117+
Traceback (most recent call last):
118+
File "<stdin>", line 9, in <module>
119+
TypeError: pozdrav() missing 1 required positional argument: 'meno'
120+
```
121+
122+
Python si stěžuje na `TypeError` – funkce `pozdrav` nedostala povinný
123+
argument `meno`.
124+
{% endfilter %}
125+
126+
Funkce může obsahovat jakýkoli kód.
127+
Třeba podmíněný příkaz, `if`.
128+
Příkazy po `if` je pak potřeba odsatit o *další* čtyři mezery:
129+
130+
```python
131+
def pozdrav(meno):
132+
print('Vitam ťa,', meno)
133+
if meno == 'Ola':
134+
print('Ty umíš programovať!')
135+
136+
pozdrav('Hubert')
137+
pozdrav('Ola')
138+
pozdrav('Soňa')
139+
```
140+

lessons/fast-track/python-basics/info.yml renamed to lessons/fast-track/def/info.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
title: Úvod do Pythonu
1+
title: Vlastní funkce
22
style: md
33
attribution:
44
- Založeno na materiálech [DjangoGirls](https://djangogirls.org/).

0 commit comments

Comments
 (0)