Obálka

Začínáme programovat v jazyku Python

Naposledy aktualizováno:    08/12/2023 23:19:46

Zpět na přehled knih.

Obsah

 


Účel a cíl publikace

Tato publikace uvádí čtenáře do světa programování prostřednictvím jazyka Python,
jenž je v současné době nejpoužívanějším programovacím jazykem.
Předkládaná příručka seznámí čtenáře s tímto jazykem a postupně jej naučí používat Python
pro tvorbu stále dokonalejších programů.
První část učebnice jej seznámí s naprostými základy jazyka,
v druhé se naučí vytvářet jednoduché programy,
třetí část jej připraví pro tvorbu větších aplikací
a ve čtvrté části si na příkladu tvorby jednoduché, nicméně netriviální aplikace
seznámí se základními pravidly vytváření komplexnějších programů
a osvojí si potřebné znalosti a dovednosti. Při vývoji aplikace se čtenář současně seznamuje
se zásadami moderního programování a učí se je naplňovat v praxi.

Hlavním rozdílem této učebnice od běžných učebnic a kurzů je, že se neomezuje na výklad toho,
jak někým navržený program zakódovat v jazyku Python,
ale učí čtenáře program samostatně navrhnout a rozchodit.

 
 

Soubory ke stažení

Pokud vám nebude ve stažených programech něco fungovat, podívejte se sem,
jestli na podobný problém nenarazil už někdo před vámi,
a jestli proto není k dispozici novější verze.
Verzi poznáte podle data a případně podle jemu předcházejícího čísla verze.

K dispozici jsou následující soubory:

 

Nejčastější dotazy (FAQ)

Tato sekce je určena pro odpovědi na vaše nejčastější dotazy.
Budete-li mít nějaký dotaz nebo upozornění na chybu, pošlete mi
mail s předmětem začínajícím 70_PYTHON_NZ_DOTAZ
Bude-li se dotaz týkat něčeho obecnějšího, zveřejním zde odpověď i pro ty ostatní.
Dopředu se ale omlouvám, že vzhledem k velkému zatížení zapříčiněnému tím,
že odevzdávám několik knížek ročně, odpovídám na dotazy poněkud se zpožděním.
Chcete-li odpověď rychle, neostýchejte se zavolat podle instrukcí na stránce
http://vyuka.pecinovsky.cz/konzultace.html

 

Dotaz:
Nedaří se mi rozchodit robota Karla ani další dodané skripty.

Odpověď:
Příčinou neúpspěchu je většinou to, že jste Python nebo IDLE spustili v jiné složce,
než v té, v níž máte uložené stažené soubory. To si musíte vždy ohlídat.

Jak ve Windows připravit zástupce, který bude správně spouštět IDLE, si můžete přečíst
v příloze, která je zde na stránce ke stažení.

Při spouštění interpretu z příkazové řádky se musíte nejprve přesunou do složky
se staženými programy, do její podsložky 70_INP, a spustit Python zde,
jak je to předvedeno v učebnici na straně 34 na obrázku 1.2.

Máte-li již Python spuštěný a chcete se přesvědčit, zda je spuštěný ve správné složce,
zadejte příkazy import os; os.getcwd()
po jejichžt zadání vám interpret vypíše aktuální složku
(Current working directory – proto getcwd).

Kdybyste chtěli aktuální složku změnit, zavolejte funkci
os.chdir('cesta/ke/správné/složce'),
kde jako argument zadáte cestu k příslušné složce, v našem případě ke složce 70_INP,
resp. k jejímu případnému přejmenovanému ekvivalentu.
Nezapomeňte v zadávaném stringu používat dopředná lomítka.
Pokud byste používali zpětná, museli byste je zdvojit.

Pokud jste ve stažených souborech nic neměnili, mělo by to po nastavení
správné akuální složky vše bez problému chodit.


 

Dotaz:
Začínám programovat v jazyku Python na straně 88 píšete o pozičních, pojmenovaných
a implicitních argumentech. Můj dotaz je:
Jaký je rozdíl mezi pojmenovaným a implicitním argumentem?
Podle hledání na Internetu to vypadá, že mezi nimi v podstatě rozdíl není.

Odpověď:
V poznámce na straně 89 jsem se to sice snažil vysvětlit, ale asi to nebylo dostatečně.
Zkusím to tedy ještě jednou:

Problém poziční versus pojmenovaný spočívá v tom, jestli při volání dané funkce
budete vedle výrazu představujícího daný argument zadávat i jméno parametru, který bude hodnotou
tohoto argumentu inicializován.
Jak jsme si na straně 89 vysvětlili v pasáži Povinně poziční a povinně pojmenované argumenty
u některých argumentů nemáte na vybranou. U těch ostatních je ale způsob zadání na vašem rozhodnutí.

Naproti tomu rozdíl mezi pojmenovaným a implicitním argumentem spočívá v tom, jestli jej musíte zadat.
Argumenty inicializující parametry, které jsou v hlavičce funkce uvedeny i se svojí implicitní hodnotou,
zadávat nemusíte, a pro inicializaci příslušného parametru se pak použije ona implicitní hodnota
kterou označujeme jako implicitní argument.

Termín pojmenovaný argument pak hovoří pouze o tom, že jste v rámci zadávání argumentu
zadali i název parametru, který bude hodnotou tohoto argumentu inicializován.


 

Errata – opravy odhalených chyb

Chyby vyskytující se pouze v tištěné verzi

Několik chybiček se podařilo odhalit až poté, co odešla kniha do tiskárny.
V PDF verzi jsem je proto opravil, ale v tištěné verzi zůstaly. Jedná se o následující chyby:

Obsah

Nejprve se musím čtenářům omluvit, ale přes značné úsilí, které jsem knize věnoval já,.
několik laických lektorů a nakonec i redaktor, zůstalo v knize pár chyb. Následující chyby
jsem v textu objevil až poté, co rukopis odešel do tiskárny. V PDF verzi jsem je proto opravil,
ale v tištěné verzi zůstaly.

Strana 101, pasáž Testy
V knize:
Návratové hodnoty true a false jsou chybně uvedeny s malým počátečním písmenem.
Správně:
Návratové hodnoty True a False mají být uvedeny s velkým počátečním písmenem.
 

Strana 101, Výpis 7.3, řádky 4 a 8
V knize:
Na uvedených řádcích chybí výpis návratové hodnoty první z funkcí volaných na předchozím řádku.
Správně:
3   >>> turn_left(k), is_wall(k) # Nyní má před sebou volno
4  (Karel_1(row=0, col=0, dir4=SOUTH, color=BLUE), False)
....................
7   >>> turn_left(k), is_east(k) # Po otočce hledí na východ
8  (Karel_1(row=0, col=0, dir4=EAST, color=BLUE), True)
 

Strana 102, Výpis 7.4, řádky 2–4 a 13–14
V knize:
Program měl před první otočkou robota otočeného na západ, ale na konci předchozího výpisu
robot končí otočen na východ.
Správně:
Program pracuje s robotem, jenž je na počátku otočen na východ.
1   >>> turn_left(k); turn_left(k); turn_left(k) # Pomalá otočka vpravo
2  Karel_1(row=0, col=0, dir4=NORTH, color=BLUE)
3  Karel_1(row=0, col=0, dir4=WEST, color=BLUE)
4  Karel_1(row=0, col=0, dir4=SOUTH, color=BLUE)
....................
12   >>> k; turn_right(k) # Rychlá otočka vpravo
13  Karel_1(row=0, col=0, dir4=SOUTH, color=BLUE)
14  Karel_1(row=0, col=0, dir4=WEST, color=BLUE)

 

Strana 103, Výpis 7.4, od řádku 15 do konce výpisu
V knize:
Začíná obratem čelem vzad (turn_about()) a pak couvne.
Správně:
Začne vypsáním aktuálního stavu, pak nejprve couvne a teprve pak se otočí a opět couvne.
15   >>> k # Začínáme na závěrečné pozici předchozího výpisu
16  Karel_1(row=0, col=0, dir4=WEST, color=BLUE)
17   >>> step_back(k); turn_about(k); step_back(k)
18  Karel_1(row=0, col=1, dir4=WEST, color=BLUE)
19  Karel_1(row=0, col=1, dir4=EAST, color=BLUE)
20  Karel_1(row=0, col=0, dir4=EAST, color=BLUE)

 

Strana 122, podkapitola 9.8 Rekurze, 1. věta
V knize:
Řadu úloh můžeme elegantně vyřešit tak, že její zadání převedeme na zjednodušené řešení téže úlohy.
Správně:
Řadu úloh můžeme elegantně vyřešit tak, že její zadání převedeme na zjednodušené zadání téže úlohy.