Už víš, že hodnota proměnné se může v čase měnit: když přiřadíš do už existující proměnné, stará hodnota se zahodí a použije se nová.
oblibena_barva = 'modrá'
print(oblibena_barva)
oblibena_barva = 'žlutá'
print(oblibena_barva)
# Na tomhle místě programu už se k řetězci 'modrá' nedostaneš...
Trošku zajímavější (nebo složitější?) je situace, kdy hodnotu proměnné přepíšeš výrazem, který používá tu stejnou proměnnou. Zkus si to:
oblibene_cislo = 7
print(oblibene_cislo)
oblibene_cislo = oblibene_cislo * 6
print(oblibene_cislo)
Co se tady děje?
Python vyhodnotí výraz za =
se starou hodnotou proměnné, a teprve když
zná výsledek, přiřadí ho (a na starou hodnotu zapomene).
V našem příkladu postupuje takhle:
oblibene_cislo = oblibene_cislo * 6
# ╰──────────┬─╯
oblibene_cislo = 7 * 6
# ╰─┬───╯
oblibene_cislo = 42
# ▲ |
# ╰──────────────────╯
Ještě „zajímavější“ je použít podobné přepisování v cyklu.
Zopakuj si, že for
cyklus jako:
print("Tady je pár čísel:")
for cislo in 8, 45, 9, 21:
print(cislo)
opakuje přiřazení do proměnné a tělo cyklu; můžeš si ho rozepsat jako:
print("Tady je pár čísel:")
cislo = 8
print(cislo)
cislo = 45
print(cislo)
cislo = 9
print(cislo)
cislo = 21
print(cislo)
Zkus podobně rozepsat cyklus v následujícím programu a popsat, co se děje:
celkem = 0
for delka_trasy in 8, 45, 9, 21:
print('Jdu', delka_trasy, 'km do další vesnice.')
celkem = celkem + delka_trasy
print('Celkem jsem ušla', celkem, 'km')