You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -1042,7 +1042,8 @@ Lepší program by dělal tohle:
1042
1042
* Když je heslo správné:
1043
1043
* Pustí uživatele dovnitř
1044
1044
1045
-
V Pythonu se „když“ řekne `if`. Používá se takhle:
1045
+
Anglicky se „když“ řekne *if*. A to je i jméno Pythoního příkazu.
1046
+
Používá se takhle:
1046
1047
1047
1048
```python
1048
1049
heslo =input('Zadej heslo: ')
@@ -1082,14 +1083,15 @@ Ještě lepší program by ale:
1082
1083
* Jinak:
1083
1084
* Spustí alarm
1084
1085
1085
-
Python má také příkazy `elif` a `else`:
1086
+
K tomu má Python příkaz `else` – „jinak“:
1086
1087
1087
1088
```python
1088
1089
heslo =input('Zadej heslo: ')
1089
1090
if heslo =='čokoláda':
1090
1091
print('Správně! Račte vstoupit.')
1091
1092
else:
1092
-
print('POZOR! POZOR! NEOPRÁVNĚNÝ VSTUP!')
1093
+
print('POZOR! POZOR!')
1094
+
print('NEOPRÁVNĚNÝ VSTUP!')
1093
1095
```
1094
1096
1095
1097
Funuje to?
@@ -1155,113 +1157,146 @@ V posledních třech cvičeních ses dozvěděla o:
1155
1157
1156
1158
Čas na předposlední část této kapitoly!
1157
1159
1158
-
## Vlastní funkce!
1159
1160
1160
-
Pamatuješ na funkci `len()`, kterou jsi spouštěla v Pythonu? Máme pro tebe dobrou zprávu. Nyní se dozvíš, jak napsat své vlastní funkce!
1161
+
## Vlastní funkce
1161
1162
1162
-
Funkce je sled instrukcí, které by měl Python provést. Každá funkce v Pythonu začíná klíčovým slovem `def`, dále je uveden název a funkce může mít také nějaké parametry. Začněme u té nejlehčí. Nahraď kód v **python_intro.py** následujícím:
1163
+
Pamatuješ na funkce `len()` a `print()`?
1164
+
Jsou jako kouzelná zaříkadla z knihy vázané v kůži: když víš jak se jmenují
1165
+
a umíš je správně {# XXX: <s>vyslovit</s> #}napsat, něco pro tebe udělají.
1163
1166
1164
-
```python
1165
-
defhi():
1166
-
print('Hi there!')
1167
-
print('How are you?')
1167
+
Teď postoupíme na další úroveň: vymyslíme si vlastní zaříkadla!
1168
+
Jak? Budeme kombinovat příkazy, které už známe.
1169
+
1170
+
Třeba funkce, která tě pozdraví, by měla:
1171
+
1172
+
* Vypsat „ahoj!“
1173
+
* Vypsat „jak se máš?“
1168
1174
1169
-
hi()
1175
+
Definice funkce v Pythonu začíná klíčovým slovem `def`,
1176
+
dále je uveden název a závorky (zatím prázdné).
1177
+
Pak jako po `if` dvojtečka, a odsazené příkazy,
1178
+
které má funkce provést.
1179
+
1180
+
```python
1181
+
defpozdrav():
1182
+
print('Ahoj!')
1183
+
print('Jak se máš?')
1170
1184
```
1171
1185
1172
1186
Naše první funkce je připravena!
1173
1187
1174
-
Asi se divíš, proč jsme napsaly název funkce v dolní části souboru. To je proto, že Python přečte soubor a spustí ho od shora dolů. Pokud chceš využívat svou funkci, musíš její název znovu napsat dole (tím ji zavoláš/spustíš).
1188
+
Když ale tenhle program spustíš, nic neudělá.
1189
+
To proto, že tohle je jen *definice* funkce.
1190
+
Python teď ví jak pozdravit – ale neřeklo se, že to má udělat!
1175
1191
1176
-
Tak to teď zkus a uvidíš, co se stane:
1192
+
Na konec programu přidej volání.
1193
+
To už není součást funkce, ale pokračování samotného programu.
1194
+
Proto nesmí být odsazené:
1177
1195
1178
-
```
1179
-
$ python3 python_intro.py
1180
-
Hi there!
1181
-
How are you?
1196
+
```python
1197
+
defpozdrav():
1198
+
print('Ahoj!')
1199
+
print('Jak se máš?')
1200
+
1201
+
pozdrav()
1182
1202
```
1183
1203
1184
-
To bylo snadné! Napišme naši první funkci s parametry. Použijeme předchozí příklad - napíšeme funkci, která nás pozdraví podle toho, jaké zadáme jméno při jejím spuštění:
1204
+
Co se stane, když funkci zavoláš několikrát po sobě?
1185
1205
1186
1206
```python
1187
-
defhi(name):
1207
+
defpozdrav():
1208
+
print('Ahoj!')
1209
+
print('Jak se máš?')
1210
+
1211
+
pozdrav()
1212
+
pozdrav()
1213
+
pozdrav()
1188
1214
```
1189
1215
1190
-
Jak vidíš, nyní jsme přidaly naší funkci parametr, `name`:
1216
+
Co se stane, když volání dáš *nad* definici funkce, místo na konec programu?
1191
1217
1192
1218
```python
1193
-
defhi(name):
1194
-
if name =='Ola':
1195
-
print('Hi Ola!')
1196
-
elif name =='Sonja':
1197
-
print('Hi Sonja!')
1198
-
else:
1199
-
print('Hi anonymous!')
1219
+
pozdrav()
1200
1220
1201
-
hi()
1221
+
defpozdrav():
1222
+
print('Ahoj!')
1223
+
print('Jak se máš?')
1202
1224
```
1203
1225
1204
-
Pamatuj si: Funkce `print` je odsazená čtyři mezery v příkazu `if`. To je proto, aby se funkce spustila, pokud je splněna podmínka. Podívej se, jak to funguje nyní:
Jejda, chyba. Naštěstí nám Python vypsal docela užitečnou chybovou zprávu. Jak vidíš, funkce `hi()` (kterou jsme definovaly) má jeden povinný parametr `(s názvem name)`, který jsme zapomněly při volání funkce předat. Pojďme to opravit v následující části:
1233
+
Python si stěžuje na `NameError` – nezná nic jménem `pozdrav`.
1215
1234
1216
-
```python
1217
-
hi("Ola")
1218
-
```
1235
+
Python totiž program čte odzhora dolů.
1236
+
Až příkazem `def` se „naučí" jak zdravit –
1237
+
Předtím, než se k příkazu `def` dostane, funkce neexistuje.
1238
+
{% endfilter %}
1219
1239
1220
-
A znovu jej spusť:
1240
+
# Parametry
1221
1241
1222
-
```
1223
-
$ python3 python_intro.py
1224
-
Hi Ola!
1225
-
```
1242
+
Funkce jako `len('slovo')` a `print(1 + 2)` umí navíc pracovat s hodnotou.
1226
1243
1227
-
A co když změníme jméno?
1244
+
Pojďme napisať funkciu, ktorá ťa pozdraví menom.
1245
+
(Uľahčíme si to použitím jazyka, ktorý nepoužíva piaty pád.)
1228
1246
1229
1247
```python
1230
-
hi("Sonja")
1248
+
defpozdrav(meno):
1249
+
print('Vitam ťa,', meno)
1250
+
1251
+
pozdrav('Ola')
1252
+
pozdrav('Soňa')
1253
+
pozdrav('Hubert')
1254
+
pozdrav('Anička')
1231
1255
```
1232
1256
1233
-
Spustíme:
1257
+
Jak to funguje?
1258
+
V definici funkce uvedeš závorkách *parametr* – jméno proměnné se kterou bude
1259
+
funkce pracovat.
1260
+
Hodnotu pro tenhle parametr pak zadáš při volání funkce.
1234
1261
1235
-
```
1236
-
$ python3 python_intro.py
1237
-
Hi Sonja!
1238
-
```
1262
+
Zvládneš napsat program, který se zeptá na jméno a pak tě pozdraví?
1239
1263
1240
-
C myslíš, že se stane, když tam napíšeš jiné jméno než Ola nebo Sonja? Zkus to a uvidíme, jestli máš pravdu. Mělo by to vypsat toto:
1264
+
{% filter solution %}
1265
+
```python
1266
+
defpozdrav(meno):
1267
+
print('Vitam ťa,', meno)
1241
1268
1269
+
pozdrav(input('Jak se jmenuješ? '))
1242
1270
```
1243
-
Hi anonymous!
1244
-
```
1271
+
{% endfilter %}
1245
1272
1246
-
To je paráda, co? Nemusíš se opakovat a měnit takto jméno pokaždé, když chceš, aby funkce pozdravila jinou osobu. To je přesně důvod, proč potřebujeme funkce: abychom nikdy neopakovaly náš kód!
1273
+
Co se stane, když funkci zavoláš bez hodnoty pro parametr?
1247
1274
1248
-
Udělejme to ještě chytřeji – existuje více jmen než dvě a psaní podmínky pro každé jméno by bylo těžké, že?
0 commit comments