Nauč se Python > Kurzy > Týmový začátečnický kurz PyLadies > Funkce a cykly > Přepisování proměnných

Přepisování proměnných

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
#         ▲                  |
#         ╰──────────────────╯

Přepisování v cyklu

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')

Řešení


Toto je stránka lekce z kurzu, který probíhá nebo proběhl naživo s instruktorem.