diff --git a/lessons/beginners/dict/index.md b/lessons/beginners/dict/index.md
index b875e373..cec5855f 100644
--- a/lessons/beginners/dict/index.md
+++ b/lessons/beginners/dict/index.md
@@ -212,7 +212,7 @@ print(popisy_funkci['len'])
### Zaplň prázdný slovník
-Nejobecnější způsob vytváření slovníků je podobný tomu co znáš u seznamů:
+Nejobecnější způsob vytváření slovníků je podobný tomu, co znáš u seznamů:
vytvoř prázdný slovník a postupně do něj přidávej záznamy, jeden za druhým.
Řekněme, že máš slovník, který přiřazuje ovoci jeho barvu:
@@ -257,7 +257,7 @@ jmena_cisel = {2: 'dva', 3: 'tři'}
```
Ale seznamy nebo jiné slovníky ne.
-Typy které se dají použít jako klíč ve slovníku se technicky označují jako
+Typy, které se dají použít jako klíč ve slovníku, se technicky označují jako
„*hashovatelné*“ (angl. *hashable*).
Tento termín se objevuje v chybových hláškách:
@@ -291,5 +291,5 @@ pěkně pohromadě, můžeš si stáhnout
[Slovníkový tahák](https://pyvec.github.io/cheatsheets/dicts/dicts-cs.pdf).
Kompletní popis slovníků najdeš
-v [dokumentaci](https://docs.python.org/3.0/library/stdtypes.html#mapping-types-dict)
+v [dokumentaci](https://docs.python.org/3/library/stdtypes.html#mapping-types-dict)
Pythonu.
diff --git a/lessons/beginners/inheritance/index.md b/lessons/beginners/inheritance/index.md
index 6658d324..24734965 100644
--- a/lessons/beginners/inheritance/index.md
+++ b/lessons/beginners/inheritance/index.md
@@ -1,7 +1,7 @@
# Dědičnost
-Minule jsme probrali třídy.
-Jako příklad jsme si ukázali třídu pro koťátka:
+Minule jsme probral{{gnd('i', 'y', both='i')}} třídy.
+Jako příklad jsme si ukázal{{gnd('i', 'y', both='i')}} třídu pro koťátka:
```python
class Kotatko:
@@ -196,7 +196,7 @@ kdekoliv kde program očekává `Zviratko`,
protože každé koťátko *je* zvířátko.
> [note]
-> Tohle je docela dobrá pomůcka pro případy, kdy nebudeš vědět
+> Tohle je docela dobrá pomůcka pro případy, kdy nebudeš vědět,
> kterou třídu podědit z které.
> Každé *koťátko* nebo *štěňátko*
> je *zvířátko*, každá *chata*
@@ -260,7 +260,7 @@ for zviratko in zviratka:
zviratko.snez('flákota')
```
-Jak tenhle příklad naznačuje, psát nadtřídy ze kterých se dobře dědí
+Jak tenhle příklad naznačuje, psát nadtřídy, ze kterých se dobře dědí,
není jednoduché. Zvlášť to platí, kdyby se z nich mělo dědit v jiném
programu, než kde je nadtřída.
I z toho důvodu je dobré dědičnost používat hlavně v rámci svého kódu:
diff --git a/lessons/beginners/interfaces/index.md b/lessons/beginners/interfaces/index.md
index 10102b65..f1bed500 100644
--- a/lessons/beginners/interfaces/index.md
+++ b/lessons/beginners/interfaces/index.md
@@ -1,11 +1,11 @@
# Rozhraní
-Už víš že funkce ti umožňují kousek kódu:
+Už víš, že funkce ti umožňují kousek kódu:
* použít (zavolat) na více místech v programu, i když definice je jen jedna,
* vyčlenit, aby detail (jako načtení čísla od uživatele) „nezavazel“ ve větším
programu, který tak může být přehlednější, a
-* pojmenovat, aby bylo jasné co kód dělá i bez toho, abys musel{{a}} číst
+* pojmenovat, aby bylo jasné, co kód dělá, i bez toho, abys musel{{a}} číst
samotné tělo funkce.
Další výhoda funkce je, že ji můžeš jednoduše vyměnit za jinou,
@@ -16,10 +16,10 @@ zásuvku ve zdi.
Do takové zásuvky můžeš zapojit počítač, lampu, nabíječku na mobil, vysavač,
nebo rádio.
Zásuvka poskytuje elektrický proud; je jedno, jak ho použiješ.
-Stejně tak je jedno jestli je „druhý konec“ zásuvky připojený k solárnímu
+Stejně tak je jedno, jestli je „druhý konec“ zásuvky připojený k solárnímu
panelu nebo k atomové elektrárně.
Zásuvka poskytuje elektrický proud, a jsou u ní důležité určité parametry
-(tvar, napětí, frekvence, maximální proud) na kterých se obě strany,
+(tvar, napětí, frekvence, maximální proud), na kterých se obě strany,
poskytovatel proudu i spotřebič, shodly.
Tyhle parametry tvoří *rozhraní*, které umožňuje připojit jakýkoli spotřebič
k jakékoli elektrárně.
@@ -39,7 +39,7 @@ def ano_nebo_ne(otazka):
Podobnou funkci už jsi napsal{{a}}.
Když zavoláš `ano_nebo_ne('Chutná ti čokoláda?')`, otázka se objeví
na příkazové řádce.
-Když uživatel odpoví, funkce vrátí True nebo False.
+Když uživatel odpoví, funkce vrátí `True` nebo `False`.
Co kdybys ale měl{{a}} následující funkci?
@@ -54,9 +54,9 @@ def ano_nebo_ne(otazka):
Když zavoláš tuhle funkci, `ano_nebo_ne('Chutná ti čokoláda?')`, ukáže se
okýnko se dvěma tlačítky.
-Když uživatel jedno zmáčkne, funkce vrátí True nebo False.
+Když uživatel jedno zmáčkne, funkce vrátí `True` nebo `False`.
-Z hlediska programu se nic nemění: jediné co se změní je *definice funkce*;
+Z hlediska programu se nic nemění: jediné, co se změní, je *definice funkce*;
volání a práce s návratovou hodnotou je pak stejné jako dřív.
@@ -87,7 +87,7 @@ vyndej, aby se použily ty naimportované.
Program by měl fungovat stejně jako dřív!
Je to tím, že tyto funkce mají stejné *rozhraní* jako jejich dřívější protějšky.
-Rozhraní funkce tvoří všechno, co potřebuje kód který funkce volá:
+Rozhraní funkce tvoří všechno, co potřebuje kód, který funkce volá:
* jméno, kterým se funkce volá,
* argumenty, které bere (např. `input` bere otázku jako řetězec; `print`
@@ -103,5 +103,5 @@ použít, věděl jak na to.
> [note]
> Modul `tkui` je jen ilustrační. Je udělaný tak, aby se dobře “instaloval”
> spíš než aby ti pomohl psát reálné programy.
-> V tomto kurzu se vrátíme zpět k příkazové řádce, která je dělaná tak
+> V tomto kurzu se vrátíme zpět k příkazové řádce, která je dělaná tak,
> aby byla užitečná pro programátory.
diff --git a/lessons/beginners/list/index.md b/lessons/beginners/list/index.md
index d378d95e..85ec1378 100644
--- a/lessons/beginners/list/index.md
+++ b/lessons/beginners/list/index.md
@@ -401,7 +401,7 @@ for cislo in range(10):
print(mocniny_dvou)
```
-Podobným způsobem získáš seznam seznam `matka`, `babička`, `prababička`,
+Podobným způsobem získáš seznam `matka`, `babička`, `prababička`,
`praprababička`, atd.:
```python
diff --git a/lessons/beginners/range/index.md b/lessons/beginners/range/index.md
index 53b52e3b..c3e4617f 100644
--- a/lessons/beginners/range/index.md
+++ b/lessons/beginners/range/index.md
@@ -61,7 +61,7 @@ Python vyhodí výjimku `MemoryError`.
> U trochu menšího čísla (např. `1000000000`, ale na každém počítači je to
> jinak) se může stát, že se Python pokusí seznam začít tvořit, zaplní přitom
> většinu dostupné paměti a počítač „zamrzne“.
-> V závislosti na systému se pak třeba může stát že reakce na
+> V závislosti na systému se pak třeba může stát, že reakce na
> Ctrl+C bude trvat hodně dlouho.
Se samotným `range(1000000000000000)` ale není problém.
diff --git a/lessons/beginners/testing/index.md b/lessons/beginners/testing/index.md
index 49337b5d..8d19caa6 100644
--- a/lessons/beginners/testing/index.md
+++ b/lessons/beginners/testing/index.md
@@ -1,8 +1,8 @@
# Testování
-Programátorská práce nespočívá jen v tom, program napsat.
+Programátorská práce nespočívá jen v tom program napsat.
Důležité je si i ověřit, že opravdu funguje, a případně ho pak opravit.
-Tomu ověřování že program funguje se říká *testování* (angl. *testing*).
+Tomu ověřování, že program funguje, se říká *testování* (angl. *testing*).
Zatím jsi asi svoje programy testoval{{a}} tak, že jsi
je zkusil{{a}} spustit, něco zadal{{a}} a podíval{{a}} se,
@@ -18,14 +18,14 @@ Píšou jiné programy, které jejich výtvory testují za ně.
zkontrolují, že program funguje správně.
Spuštěním testů můžeš kdykoli ověřit, že kód funguje.
Když v otestovaném kódu v budoucnu uděláš nějakou změnu,
-testy ověří, že jsi nerozbil{{a}} nic co dříve fungovalo.
+testy ověří, že jsi nerozbil{{a}} nic, co dříve fungovalo.
## Instalace knihovny pytest
Zatím jsme v kurzu pracovali s tím, co se instaluje
se samotným Pythonem – s moduly jako `math` a `turtle`.
-Kromě takových modulů ale existuje ale velká spousta
+Kromě takových modulů ale existuje velká spousta
dalších *knihoven*, které nejsou přímo v Pythonu, ale dají se doinstalovat
a používat.
@@ -54,8 +54,8 @@ Potom zadej následující příkaz.
> už při instalaci můžou něco pokazit.
> Dej si proto pozor a ve jménu `pytest` neudělej překlep!
>
-> Nainstaluješ-li přesto omylem něco cos nechtěl{{a}}, dej co nejdřív vědět
-> zkušenějšímu programátorovi, aby zkontroloval jaký to mohlo mít efekt.
+> Nainstaluješ-li přesto omylem něco, cos nechtěl{{a}}, dej co nejdřív vědět
+> zkušenějšímu programátorovi, aby zkontroloval, jaký to mohlo mít efekt.
```console
(venv)$ python -m pip install pytest
@@ -86,7 +86,7 @@ Potom zadej následující příkaz.
Nejdříve si testování ukážeme na jednoduchém příkladu.
Tady je funkce `secti`, která umí sečíst
-dvě čísla, a další funkce, která testuje jestli se
+dvě čísla, a další funkce, která testuje, jestli se
`secti` pro určité hodnoty chová správně.
Kód si opiš do souboru `test_secteni.py` v novém prázdném adresáři.
@@ -159,7 +159,7 @@ usnadnit nalezení a opravu chyby.
> lze též uvést adresář: `pytest` vyhledá testy v něm.
Zkus si změnit funkci `secti` (nebo její test) a podívat se,
-jak to vypadá když test „neprojde“.
+jak to vypadá, když test „neprojde“.
## Testovací moduly
@@ -170,7 +170,7 @@ Je to tak přehlednější a taky to pak zjednodušuje
*distribuci* – předání kódu někomu, kdo ho chce
jen spustit a testy nepotřebuje.
-Rozděl soubor s testem sečítání: funkci `secti` přesuň do modulu `secteni.py`,
+Rozděl soubor s testem sečítání: funkci `secti` přesuň do modulu `secteni.py`
a v `test_secteni.py` nech jenom test.
Do `test_secteni.py` pak na začátek přidej `from secteni import secti`,
aby byla funkce testu k dispozici.
diff --git a/lessons/beginners/tuple/index.md b/lessons/beginners/tuple/index.md
index 0d34379b..1a8812ce 100644
--- a/lessons/beginners/tuple/index.md
+++ b/lessons/beginners/tuple/index.md
@@ -3,7 +3,7 @@
Když už známe seznam, podívejme se na jeho sestřičku: takzvanou
n-tici (angl. *tuple*).
-N-tice může, podobně jako seznam, obsahovat n prvků.
+N-tice může, podobně jako seznam, obsahovat n prvků.
N-tice se dvěma prvky je *dvojice*
neboli *pár* (angl. *pair*); se třemi
prvky *trojice* (angl. *3-tuple*),
@@ -143,7 +143,7 @@ seznam lidí aktuálně sledujících video může být občas prázdný.
Seznamy i n-tice mají i technické limity:
n-tice nejdou měnit a až se naučíš pracovat se slovníky,
-zjistíš že seznamy tam nepůjdou použít jako klíče.
+zjistíš, že seznamy tam nepůjdou použít jako klíče.
V takových případech je potřeba použít ten druhý typ sekvence.
Často není úplně jasné, který typ použít.
diff --git a/lessons/beginners/with/index.md b/lessons/beginners/with/index.md
index 1f3e26fe..18de077f 100644
--- a/lessons/beginners/with/index.md
+++ b/lessons/beginners/with/index.md
@@ -52,7 +52,7 @@ print(nacti_cele_cislo('cislo.txt') * 11)
Chování příkazu `with` závisí na objektu, se kterým jej použiješ.
Pro soubor – výsledek funkce `open` – se soubor na konci bloku zavře.
-Podobných „samozavíracích“ objektů které se dají použít s `with` existuje
+Podobných „samozavíracích“ objektů, které se dají použít s `with`, existuje
v různých knihovnách víc.
Typické jsou objekty, které se starají o připojení např. k jinému počítači
nebo k databázi, kdy je po práci dobré spojení ukončit a „uklidit po sobě“.
diff --git a/lessons/beginners/zip-enumerate/index.md b/lessons/beginners/zip-enumerate/index.md
index 2a0549d9..0fa5fb39 100644
--- a/lessons/beginners/zip-enumerate/index.md
+++ b/lessons/beginners/zip-enumerate/index.md
@@ -26,7 +26,7 @@ Oba jsou sekvence vytvořené z jiných, jednodušších sekvencí.
Funkce `enumerate` vezme nějakou existující sekvenci a *očísluje ji*:
ve vrácené sekvenci budou dvojice (index, původní hodnota).
-Řekněme že máš tento seznam:
+Řekněme, že máš tento seznam:
```python
trpaslici = ['Prófa', 'Stydlín', 'Dřímal', 'Kejchal', 'Štístko',
@@ -170,7 +170,7 @@ for index, den in enumerate(dny, start=1):
Další iterátor n-tic je funkce `zip`, která umí projít dvě sekvence
naráz.
-Řekněme že máš seznam věcí a druhý seznam, ve kterém jsou barvy těch věcí:
+Řekněme, že máš seznam věcí a druhý seznam, ve kterém jsou barvy těch věcí:
```python
veci = ['tráva', 'slunce', 'mrkev', 'list']
@@ -231,7 +231,7 @@ for vec, barva in zip(veci, barvy):
```
{% filter solution %}
-Iterátor `zip` skončí hned když dojdou prvky nejkratší sekvence.
+Iterátor `zip` skončí hned, když dojdou prvky nejkratší sekvence.
{% endfilter %}
Občas je potřeba projít všechny záznamy.
diff --git a/lessons/intro/json/index.md b/lessons/intro/json/index.md
index 01cd8703..d6465066 100644
--- a/lessons/intro/json/index.md
+++ b/lessons/intro/json/index.md
@@ -235,9 +235,9 @@ se často používají formáty [TOML] nebo [YAML].
### TOML
-Knihovnu pro TOML potřeba si nainstalovat.
+Knihovnu pro TOML je potřeba si nainstalovat.
Dělá se to příkazem, který znáš z instalace knihovny Pytest.
-Pozor ve jméně `toml` neudělej překlep, jinak nainstaluješ něco jiného
+Pozor, ve jméně `toml` neudělej překlep, jinak nainstaluješ něco jiného
(a možná nebezpečného!):
```console