@@ -8,7 +8,8 @@ print('Ahoj světe!')
88
99Dnes si ukážeme, jak psát funkce vlastní.
1010
11- Není to tak složité:
11+ Pokud umíš ` if ` a ` for ` – s jednořádkovou hlavičkou a odsazeným tělem příkazu –
12+ neměl by ti zápis funkce připadat nijak zvláštní:
1213
1314``` python
1415def obvod_obdelnika (sirka , vyska ):
@@ -22,15 +23,15 @@ Jak to funguje?
2223
2324
2425Funkce se * definuje* příkazem ` def ` , za nějž napíšeš jméno funkce,
25- pak do závorky seznam * argumentů * , které funkce bere, a pak dvojtečku.
26+ pak do závorky seznam * parametrů * , které funkce bere, a pak dvojtečku.
2627
2728Potom následuje odsazené * tělo funkce* – příkazy, které funkce provádí.
2829Tělo může začít * dokumentačním řetězcem* , který popisuje, co funkce dělá.
2930
30- Příkazem ` return ` pak můžeš z funkce
31- vrátit nějakou hodnotu.
31+ Příkazem ` return ` pak můžeš z funkce * vrátit* nějakou hodnotu.
3232
33- Tělo funkce může mít více příkazů, včetně podmínek, cyklů a podobně:
33+ Tělo funkce může mít více příkazů – včetně podmínek, cyklů a podobně.
34+ Následující procedura třeba vypíše skóre daného hráče a k tomu hlášku:
3435
3536``` python
3637def napis_hlasku (nazev , skore ):
@@ -53,7 +54,7 @@ napis_hlasku('Protivníkovo', 5)
5354```
5455
5556Při volání funkce se hodnoty, se kterými funkci
56- zavoláš, přiřadí jednotlivým argumentům .
57+ zavoláš, přiřadí jednotlivým parametrům .
5758Takže když zavoláš třeba ` napis_hlasku('Tvoje', 256) ` ,
5859můžeš si představit, že funkce dělá následující:
5960
@@ -72,18 +73,34 @@ Speciální příkaz `return`, který jde použít jenom ve funkcích,
7273
7374Chová se tedy trochu jako ` break ` , jen místo cyklu opouští celou funkci.
7475
76+ Podobně jako ` break ` se dá použít v případech, kdy potřebuješ od uživatele
77+ dostat odpověď – a opakuješ dotaz tak dlouho, dokud požadovanou odpověď
78+ nedostaneš.
79+ Třeba, chceš-li odpověď „ano“ nebo „ne“:
80+
81+ * Takhle se zjišťuje odpověď ano (Pravda) nebo ne (Nepravda) na danou * otázku* :
82+ * Pořád dokola:
83+ * Zeptej se na * otázku* ; zapamatuj si * odpověď* .
84+ * Je-li odpověď „ano“:
85+ * Výsledek je Pravda. Hotovo; dál nepokračuj.
86+ * Jinak, je-li odpověď „ne“:
87+ * Výsledek je Nepravda. Hotovo; dál nepokračuj.
88+ * Pouč uživatele, ať odpoví „ano“ nebo „ne“.
89+ <br >* (a zkus to znovu – viz „Pořád dokola“)*
90+
7591``` python
7692def ano_nebo_ne (otazka ):
77- " Vrátí True nebo False, podle odpovědi uživatele"
93+ " Vrátí True nebo False podle odpovědi uživatele"
7894 while True :
7995 odpoved = input (otazka)
8096 if odpoved == ' ano' :
8197 return True
8298 elif odpoved == ' ne' :
8399 return False
84- else :
85- print (' Nerozumím! Odpověz "ano" nebo "ne".' )
86100
101+ print (' Nerozumím! Odpověz "ano" nebo "ne".' )
102+
103+ # Příklad použití
87104if ano_nebo_ne(' Chceš si zahrát hru? ' ):
88105 print (' OK! Ale napřed si ji musíš naprogramovat.' )
89106else :
@@ -115,7 +132,7 @@ print('Obsah elipsy s osami 3 cm a 5 cm je', obsah_elipsy(3, 5), 'cm2')
115132
116133### Vrátit nebo vypsat?
117134
118- Předchozí program se dá napsat i takto :
135+ Předchozí program se dá napsat i s procedurou místo funkce :
119136
120137``` python
121138from math import pi
@@ -129,7 +146,7 @@ obsah_elipsy(3, 5)
129146Program takhle funguje, ale přichází o jednu z hlavních výhod funkcí:
130147možnost vrácenou hodnotu použít i jinak jež jen v ` print ` .
131148
132- Funkci, která výsledek vrací, můžeš použít v dalších výpočtech:
149+ Funkci, která vrací výsledek , můžeš použít v dalších výpočtech:
133150
134151``` python
135152def objem_eliptickeho_valce (a , b , vyska ):
@@ -138,13 +155,13 @@ def objem_eliptickeho_valce(a, b, vyska):
138155print (objem_eliptickeho_valce(3 , 5 , 3 ))
139156```
140157
141- ... ale kdyby výsledek přímo vypsala, nešlo by to.
158+ ... ale s procedurou, která výsledek přímo vypíše, by to nešlo .
142159
143160Další důvod, proč hodnoty spíš vracet než vypisovat, je ten, že jedna funkce se
144161dá použít v různých situacích.
145- Funkci s ` print ` by nešlo rozumně použít tehdy, když nás příkazová
146- řádka vůbec nezajímá.
147- Třeba v grafické hře, webové aplikaci, nebo pro ovládání robota.
162+ Proceduru s ` print ` by nešlo rozumně použít tehdy, když nás příkazová
163+ řádka vůbec nezajímá – třeba v grafické hře, webové aplikaci, nebo pro ovládání
164+ robota.
148165
149166Podobně je to se vstupem: když použiju v rámci své funkce ` input ` , bude se
150167moje funkce dát použít jen v situacích, kdy je u počítače klávesnice a za ní
@@ -167,9 +184,10 @@ y = float(input('Zadej délku poloosy 2: '))
167184print (' Obsah je' , obsah_elipsy(x, y))
168185```
169186
170- Samozřejmě existují výjimky: funkce která přímo vytváří textový výpis,
187+ Samozřejmě existují výjimky: procedura která přímo vytváří textový výpis
171188může používat ` print ` ; funkce která načítá textové informace zase ` input ` .
172- Když ale funkce něco počítá, je dobré v ní ` print ` ani ` input ` nemít.
189+ Když ale funkce něco * počítá* , nebo když si nejsi jist{{gnd('ý', 'á')}},
190+ je dobré ve funkci ` print ` ani ` input ` nemít.
173191
174192
175193## None
0 commit comments