4. hodina – Cyklus while
Cyklus while, příkazy break a continue, srovnání cyklů a opakování.
Výklad a cvičení
Výklad si můžeš přečíst přímo na webu. Příklady procházej po pořadí a kód si zkoušej ve VS Code.
Cyklus while, příkazy break a continue, srovnání cyklů a opakování.
Výklad si můžeš přečíst přímo na webu. Příklady procházej po pořadí a kód si zkoušej ve VS Code.
Procházej příklady postupně, pak si vyzkoušej cvičení. Kód z bloků si můžeš zkopírovat do Python souboru ve VS Code a spustit. Příklady na jedné stránce na sebe mohou navazovat.
Spusť soubor a vyzkoušej ho víckrát s různými odpověďmi. Když budeš chtít program zastavit dřív, klikni dole do panelu Terminál a zmáčkni Ctrl+C. Program jde taky zabít ikonou koše vpravo v tom panelu.
Cyklus for použijeme, když předem víme, kolikrát se má něco zopakovat – projdeme range nebo písmena ve slově. Někdy to ale předem nevíme. Chceme opakovat „dokud něco platí". Od toho je cyklus while.
Ptáme se na heslo tak dlouho, dokud není správné.
heslo = input("Zadej heslo: ")
while heslo != "pyladies":
print("Špatně, zkus to znovu.")
heslo = input("Zadej heslo: ")
print("Vítej!")
Na heslo se ptáme dvakrát – jednou před cyklem, jednou uvnitř. Není to překlep. Před cyklem se musíme zeptat proto, aby podmínka měla co porovnávat: kontroluje se dřív, než tělo cyklu poprvé proběhne. Uvnitř proto, aby se odpověď před další kontrolou změnila. Bez toho by heslo zůstalo pořád stejné, podmínka by pořád platila a cyklus by běžel donekonečna. V tomto zápisu tedy potřebujeme vstup před cyklem i uvnitř něj. V příkladu Nekonečný cyklus uvidíš jiný zápis, který se ptá jen na jednom místě.
Kolikrát se cyklus zopakoval? To dopředu nevíme – záleží na tom,
kdy heslo trefíš. Napoprvé, napotřetí, nebo až po deseti pokusech.
Pro takový úkol se hodí while: k opakování mu stačí podmínka.
Takhle se cyklus while čte:
while znamená „opakuj, dokud platí podmínka“.True nebo False, stejně jako u if.:.while heslo != "pyladies":
...odsazené řádky...
(Celý cyklus krok za krokem ukazuje obrázek cyklus_while.png.)

Zpět na téma: Cyklus while · Další: Když se proměnná mění výpočtem
Spusť soubor a sleduj, co se vypíše.
V prvním souboru se proměnná z podmínky měnila tím, že jsme se znovu zeptali uživatele. Můžeme si ji taky spočítat. Cyklus pak běží, dokud výpočet nedojde tam, kam chceme.
Máme provaz dlouhý 100 cm. Přestřihneme ho napůl, jednu polovinu zase napůl, a tak dál. Kolikrát musíme střihnout, než bude kus kratší než 1 cm?
delka = 100
strihnuti = 0
while delka > 1:
delka = delka / 2 # měníme proměnnou z podmínky
strihnuti = strihnuti + 1
print("Střihnutí", strihnuti, "– délka:", delka, "cm")
print("Počet střihnutí:", strihnuti)
Proměnné strihnuti se říká počítadlo. Hodí se vždycky, když potřebuješ vědět, kolikrát cyklus proběhl.
Zpět na téma: Cyklus while · Další: Jak cyklus skončí: ukončovací podmínka a break
Spusť soubor víckrát – pokaždé to dopadne jinak.
V prvním souboru jsme psali:
while heslo != "pyladies":
Té podmínce se říká ukončovací podmínka. Python ji zkontroluje vždycky před každým průchodem cyklem: platí → tělo cyklu se provede a kontrola se opakuje neplatí → cyklus skončí a program pokračuje pod ním
Tímhle řádkem si přidáme funkci randrange, kterou má Python připravenou. randrange(1, 7) vybere náhodné číslo od 1 do 6 – jako hod kostkou.
from random import randrange
Házíme kostkou tak dlouho, dokud nepadne šestka.
hod = randrange(1, 7)
while hod != 6:
print("Padlo", hod, "- házíme znovu.")
hod = randrange(1, 7) # DŮLEŽITÉ: měníme proměnnou z podmínky
print("Šestka! Můžeš začít.")
Když padne šestka hned napoprvé, tělo cyklu neproběhne ani jednou. Podmínka se totiž kontroluje už před prvním průchodem.
Všimni si posledního řádku v cyklu: kdybychom kostkou znovu nehodili, hod by zůstal pořád stejný a cyklus by nikdy neskončil.
(Tři různé běhy tohohle programu ukazuje obrázek cyklus_while_behy.png.)
Někdy chceme cyklus opustit dřív, než podmínka přestane platit. Od toho je příkaz break – okamžitě z cyklu vyskočí.
Zase házíme na šestku, ale po jedničce to vzdáme.
hod = randrange(1, 7)
while hod != 6:
if hod == 1:
print("Padla jednička, končíme.")
break # break = okamžitě opusť cyklus
print("Padlo", hod, "- házíme znovu.")
hod = randrange(1, 7)
print("Konec hry.")
Tenhle cyklus má tedy dva východy:
padne šestka → podmínka hod != 6 přestane platit
padne jednička → break nás z cyklu vyhodí rovnou

Spusť soubor a odpovídej, dokud tě to bude bavit.
Když se ukončovací podmínka nikdy neporuší, cyklus běží donekonečna – tomu se říká nekonečný cyklus. Program pak „zamrzne" a musíš ho zastavit sama: klikni dole do panelu Terminál a zmáčkni Ctrl+C. Druhá možnost je ikona koše vpravo v tom panelu – ta program rovnou zabije.
Takhle nekonečný cyklus vznikne omylem – NESPOUŠTĚJ to, běželo by to pořád. Zapomněli jsme cislo zvětšovat, takže je pořád 1 a podmínka cislo <= 5 pořád platí:
cislo = 1
while cislo <= 5:
print(cislo)
Nejčastější chyba u while je přesně tahle: v těle cyklu chybí řádek, který mění proměnnou z podmínky.
Někdy ale nekonečný cyklus chceme schválně – třeba menu, které se opakuje, dokud uživatelka neřekne dost. Napíšeme while True (podmínka platí vždycky) a ven se dostaneme příkazem break, který už známe.
while True:
odpoved = input("Chceš pokračovat? (ano/ne) ")
if odpoved == "ne":
break
print("Pokračujeme!")
print("Konec.")
Na odpověď se tady ptáme jen na jednom místě. Podmínka while True se nekontroluje proti žádné proměnné, takže input nemusíme psát i před cyklem, jako jsme to dělali v souboru 01.
while True se bez breaku neobejde – je to jediná cesta ven. break funguje stejně i uvnitř cyklu for.
Zpět na téma: Cyklus while · Další: continue – přeskoč zbytek průchodu
Spusť soubor a zadej pár čísel, mezi nimi i nějaké záporné.
break z cyklu vyskočí úplně. Příkaz continue ukončí jenom jeden průchod: zbytek těla cyklu se přeskočí a pokračuje se kontrolou podmínky.
Sčítáme zadaná čísla, záporná do součtu nepočítáme.
soucet = 0
while True:
odpoved = input("Zadej číslo (nebo 'konec'): ")
if odpoved == "konec":
break
cislo = int(odpoved)
if cislo < 0:
print("Záporné číslo přeskakujeme.")
continue # zpátky nahoru, další řádky se neprovedou
soucet = soucet + cislo
print("Zatím máme:", soucet)
print("Součet:", soucet)
Pozor na continue v cyklu s počítadlem. Tenhle cyklus by běžel donekonečna – u trojky se continue vrátí nahoru a řádek, který cislo zvětšuje, se přeskočí (NESPOUŠTĚJ):
cislo = 1
while cislo <= 5:
if cislo == 3:
continue
print(cislo)
cislo = cislo + 1
Každé cvičení má vlastní soubor ve složce lekce04-cyklus-while/01_cyklus_while/cviceni/. Otevři ho ve VS Code, doplň kód pod zadání a soubor spusť (Run). Řešení si rozklikni až po vlastním pokusu – tvoje řešení může vypadat jinak, a to je v pořádku.
Soubor: cviceni/01_odpocitavani.py
Odpočítávej cyklem while od 10 do 1 a nakonec vypiš "Start!".
cislo = 10
while cislo >= 1:
print(cislo)
cislo = cislo - 1
print("Start!")
Soubor: cviceni/02_zdvojnasobovani.py
Začni s číslem 1 a v cyklu ho pořád zdvojnásobuj. Zastav se, jakmile přesáhne 1000, a vypiš, kolikrát jsi ho zdvojnásobila.
cislo = 1
kolikrat = 0
while cislo <= 1000:
cislo = cislo * 2
kolikrat = kolikrat + 1
print("Číslo:", cislo)
print("Počet zdvojnásobení:", kolikrat)
Soubor: cviceni/03_hlavni_mesto.py
Ptej se uživatele "Jaké je hlavní město Česka? " tak dlouho, dokud nenapíše "Praha". Pak vypiš "Správně!".
odpoved = input("Jaké je hlavní město Česka? ")
while odpoved != "Praha":
odpoved = input("Jaké je hlavní město Česka? ")
print("Správně!")
Soubor: cviceni/04_scitani_do_nuly.py
Uživatel postupně zadává čísla. Sčítej je. Jakmile zadá 0, přestaň se ptát a vypiš celkový součet.
soucet = 0
cislo = int(input("Zadej číslo (0 = konec): "))
while cislo != 0:
soucet = soucet + cislo
cislo = int(input("Zadej číslo (0 = konec): "))
print("Součet je", soucet)
Soubor: cviceni/05_while_true_s_break.py
Pořád dokola se ptej "Napiš slovo: " a to slovo vypiš. Když uživatel napíše "konec", ukonči cyklus příkazem break. Použij while True.
while True:
slovo = input("Napiš slovo: ")
if slovo == "konec":
break
print(slovo)
print("Konec.")
Soubor: cviceni/06_heslo.py
Ptej se na heslo. Když uživatel zadá "pyladies", vypiš "Vítej!" a skonči. Když se splete třikrát, vypiš "Zablokováno." a skonči taky. Z cyklu se v obou případech dostaneš příkazem break.
pokusy = 0
while True:
heslo = input("Zadej heslo: ")
pokusy = pokusy + 1
if heslo == "pyladies":
print("Vítej!")
break
if pokusy == 3:
print("Zablokováno.")
break
print("Špatně, zkus to znovu.")
Soubor: cviceni/07_seznam_jmen.py
Ptej se "Jméno: " a každé jméno vypiš. Když uživatel nic nenapíše a jen zmáčkne Enter, přeskoč výpis příkazem continue. Cyklus ukonči, když uživatel napíše "konec". (Prázdná odpověď z inputu je prázdný text: "")
while True:
jmeno = input("Jméno: ")
if jmeno == "konec":
break
if jmeno == "":
continue
print(jmeno)
print("Konec.")
Zpět na téma: Cyklus while · Další: Bonusová cvičení: Cyklus while
Bonusy jsou pro rychlíky – když máš hotová cvičení a zbývá čas. Každý bonus má vlastní soubor ve složce lekce04-cyklus-while/01_cyklus_while/cviceni_bonusy/. Řešení si rozklikni až po vlastním pokusu – tvoje řešení může vypadat jinak, a to je v pořádku.
Soubor: cviceni_bonusy/01_oko_bere.py
Hra "Oko bere":
Začínáš s 0 body.
V každém kole se ukáže, kolik máš bodů, a zeptáš se, jestli si chceš líznout kartu.
Když ano, počítač ti dá náhodnou kartu 2 až 10 (randrange(2, 11)) a přičte ji k bodům.
Cíl je dostat se přesně na 21. Když přetáhneš přes 21, prohráváš.
Když řekneš, že už nechceš, hra skončí a vypíše se výsledek. Nahoru na první řádek nezapomeň: from random import randrange
from random import randrange
soucet = 0
while soucet < 21:
print("Máš", soucet, "bodů.")
odpoved = input("Chceš si líznout? (ano/ne) ")
if odpoved == "ne":
break
karta = randrange(2, 11)
print("Lízla sis", karta)
soucet = soucet + karta
if soucet == 21:
print("Přesně 21, vyhráváš!")
elif soucet > 21:
print("Přetáhla jsi přes 21, prohráváš. Máš", soucet)
else:
print("Končíš s", soucet, "body.")
Procházej příklady postupně, pak si vyzkoušej cvičení. Kód z bloků si můžeš zkopírovat do Python souboru ve VS Code a spustit. Příklady na jedné stránce na sebe mohou navazovat.
Spusť soubor a sleduj, co se vypíše.
Oba cykly opakují. Liší se tím, kdy se hodí: for – když počet opakování známe předem (projít range nebo text) while – když počet neznáme a opakujeme, dokud platí nějaká podmínka
Stejný úkol – vypsat čísla 1 až 5 – jde napsat obojím:
Forem: počet opakování známe (pět čísel), for si počítání hlídá sám.
for cislo in range(1, 6):
print(cislo)
Whilem: totéž, ale počítadlo si musíme hlídat sami.
cislo = 1
while cislo <= 5:
print(cislo)
cislo = cislo + 1
Když počet opakování známe, for bývá kratší a přehlednější. Některé úlohy ale forem nenapíšeš a bez while se neobejdeš – třeba: opakuj, dokud uživatel nezadá správné heslo opakuj, dokud hráč nechce skončit
Zpět na téma: For versus while · Další: Cvičení: For versus while
Každé cvičení má vlastní soubor ve složce lekce04-cyklus-while/02_for_vs_while/cviceni/. Otevři ho ve VS Code, doplň kód pod zadání a soubor spusť (Run). Řešení si rozklikni až po vlastním pokusu – tvoje řešení může vypadat jinak, a to je v pořádku.
Soubor: cviceni/01_jaky_cyklus.py
Ke každému zadání si za pomlčku dopiš for, nebo while, a proč sis ho vybrala. Ptej se sama sebe: vím dopředu, kolikrát se to má zopakovat?
Zatluč do prkna 10 hřebíků.
Buš kladivem do hřebíku, dokud není úplně zatlučený.
Zahřívej vodu, dokud se nezačne vařit.
Házej mincí, dokud nepadne panna.
Házej kostkou, dokud šestka nepadne potřetí.
Zeptej se uživatelky na číslo a tolikrát hoď kostkou.
Hoď kostkou a vypiš, co padlo.
Vypiš sudá čísla od 0 do 100.
Vypiš sudá čísla od 0 do čísla, které zadá uživatelka.
Vypiš každé písmeno slova "Praha".
Přidávej do košíku jablka, dokud košík neváží aspoň 2 kg.
Projdi 30 odpovědí v testu a spočítej, kolik jich je správně.
Tvoje zdůvodnění může být formulované jinak.
for – hřebíků je deset, počet známe předem.
while – kolik ran bude potřeba, dopředu nevíme.
while – jak dlouho se voda bude vařit, dopředu nevíme.
while – panna může padnout hned, nebo až po deseti hodech.
while – šestky počítáme, ale kolik hodů na tři bude potřeba nevíme.
for – jakmile uživatelka číslo zadá, počet opakování známe.
žádný cyklus – hodíme jednou a vypíšeme, nic se neopakuje.
for – čísla od 0 do 100 jsou daná, range(0, 101, 2).
for – počet je daný zadaným číslem, jen ho neznáme při psaní kódu.
for – procházíme text, počet písmen je daný.
while – kolik jablek se do dvou kilo vejde, dopředu nevíme.
for – odpovědí je třicet.
Soubor: cviceni/02_pismena_slova.py
Nejdřív rozhodni for/while a napiš si do komentáře proč, pak úlohu naprogramuj.
Vypiš všechna písmena slova "Python", každé na svůj řádek.
Počet opakování známe (kolik má slovo písmen) -> for.
for pismeno in "Python":
print(pismeno)
Soubor: cviceni/03_pin.py
Nejdřív rozhodni for/while a napiš si do komentáře proč, pak úlohu naprogramuj.
Ptej se na PIN tak dlouho, dokud uživatel nezadá "1234". Pak vypiš "Odemčeno!".
Ptej se na PIN tak dlouho, dokud uživatel nezadá "1234". Kolikrát se splete dopředu nevíme -> while.
pin = input("Zadej PIN: ")
while pin != "1234":
print("Špatný PIN.")
pin = input("Zadej PIN: ")
print("Odemčeno!")
Soubor: cviceni/04_nasobky_tri.py
Nejdřív rozhodni for/while a napiš si do komentáře proč, pak úlohu naprogramuj.
Vypiš prvních deset násobků čísla 3 (3, 6, 9, ... 30).
Deset opakování, počet známe -> for.
for cislo in range(3, 31, 3):
print(cislo)
Jde to i bez kroku – vynásobit si to v cyklu sama:
for cislo in range(1, 11):
print(cislo * 3)
Soubor: cviceni/05_cisla_do_zaporneho.py
Nejdřív rozhodni for/while a napiš si do komentáře proč, pak úlohu naprogramuj.
Načítej od uživatele čísla tak dlouho, dokud nezadá záporné číslo. Pak vypiš, kolik čísel stihl zadat.
Kolik čísel zadá dopředu nevíme -> while.
kolik = 0
cislo = int(input("Zadej číslo: "))
while cislo >= 0:
kolik = kolik + 1
cislo = int(input("Zadej číslo: "))
print("Počet zadaných čísel před tím záporným:", kolik)
Soubor: cviceni/06_unikajici_voda.py
Nejdřív rozhodni for/while a napiš si do komentáře proč, pak úlohu naprogramuj.
V nádrži je 45 litrů vody a každou minutu z ní uteče 3 litry. Po každé minutě vypiš, kolik vody zbývá, a nakonec vypiš, po kolika minutách je nádrž prázdná.
V nádrži je 45 litrů, každou minutu uteče 3 litry. Po každé minutě vypiš zbytek, nakonec počet minut. Kolikrát se cyklus zopakuje dopředu nevíme -> while.
voda = 45
minuty = 0
while voda > 0:
voda = voda - 3
minuty = minuty + 1
print("Po", minuty, "minutách zbývá", voda, "litrů.")
print("Nádrž je prázdná po", minuty, "minutách.")
Procházej příklady postupně, pak si vyzkoušej cvičení. Kód z bloků si můžeš zkopírovat do Python souboru ve VS Code a spustit. Příklady na jedné stránce na sebe mohou navazovat.
Každé cvičení má vlastní soubor ve složce lekce04-cyklus-while/03_opakovani/cviceni/. Otevři ho ve VS Code, doplň kód pod zadání a soubor spusť (Run). Řešení si rozklikni až po vlastním pokusu – tvoje řešení může vypadat jinak, a to je v pořádku.
Soubor: cviceni/01_delitelna_tremi_nebo_peti.py
Projdi cyklem for čísla od 1 do 30. Vypiš jen ta, která jsou dělitelná třemi nebo pěti. (Nápověda: cislo % 3 == 0)
for cislo in range(1, 31):
if cislo % 3 == 0 or cislo % 5 == 0:
print(cislo)
Soubor: cviceni/02_pocet_pismen_a.py
Uživatel zadá slovo. Spočítej, kolikrát se v něm objeví písmeno "a", a výsledek vypiš.
slovo = input("Zadej slovo: ")
pocet = 0
for pismeno in slovo:
if pismeno == "a":
pocet = pocet + 1
print("Písmeno 'a' je ve slově", pocet, "krát")
Soubor: cviceni/03_cisla_do_nuly.py
Uživatel zadává čísla tak dlouho, dokud nezadá 0. Nakonec vypiš jejich součet, kolik jich bylo a jejich průměr zaokrouhlený na jedno desetinné místo. (Nápověda: round(cislo, 1))
soucet = 0
pocet = 0
cislo = int(input("Zadej číslo (0 = konec): "))
while cislo != 0:
soucet = soucet + cislo
pocet = pocet + 1
cislo = int(input("Zadej číslo (0 = konec): "))
if pocet == 0:
print("Nezadala jsi žádné číslo.")
else:
print("Součet:", soucet)
print("Počet:", pocet)
print("Průměr:", round(soucet / pocet, 1))
Soubor: cviceni/04_namerene_teploty.py
Uživatel zadává naměřené teploty. Po každé se zeptej "Další? (ano/ne) ". Až odpoví "ne", vypiš nejvyšší teplotu.
První teplotu si rovnou zapamatujeme jako zatím nejvyšší, každou další s ní porovnáme.
nejvyssi = int(input("Zadej teplotu: "))
while True:
dalsi = input("Další? (ano/ne) ")
if dalsi == "ne":
break
teplota = int(input("Zadej teplotu: "))
if teplota > nejvyssi:
nejvyssi = teplota
print("Nejvyšší teplota byla", nejvyssi)
Soubor: cviceni/05_hadej_cislo.py
Hra "hádej číslo":
Počítač si vylosuje číslo od 1 do 20: randrange(1, 21)
Uživatel hádá. Po každém tipu vypiš "Moc velké." nebo "Moc malé.".
Když trefí, vypiš "Trefa!" a skonči.
Když se netrefí ani na pátý pokus, prozraď číslo a skonči. Nahoru na první řádek nezapomeň: from random import randrange
from random import randrange
hadane_cislo = randrange(1, 21)
pokusy = 0
while True:
odpoved = int(input("Hádej číslo od 1 do 20: "))
pokusy = pokusy + 1
if odpoved == hadane_cislo:
print("Trefa!")
break
if pokusy == 5:
print("Pět pokusů je pryč. Číslo bylo", hadane_cislo)
break
if odpoved > hadane_cislo:
print("Moc velké.")
else:
print("Moc malé.")
Zpět na téma: Opakování · Další: Bonusová cvičení: Opakování
Bonusy jsou pro rychlíky – když máš hotová cvičení a zbývá čas. Každý bonus má vlastní soubor ve složce lekce04-cyklus-while/03_opakovani/cviceni_bonusy/. Řešení si rozklikni až po vlastním pokusu – tvoje řešení může vypadat jinak, a to je v pořádku.
Soubor: cviceni_bonusy/01_kamen_nuzky_papir.py
Kámen, nůžky, papír – znáš z bonusu v lekci 2, kde hráli dva lidé. Teď to rozšíříme: hraješ proti počítači a na víc kol.
Zeptej se na svůj tah: "kamen", "nuzky" nebo "papir".
Počítač si tah vylosuje: randrange(1, 4) vrátí 1, 2 nebo 3, tak si to číslo přelož na tah (1 = kamen, 2 = nuzky, 3 = papir).
Vypiš, co hrál počítač, a kdo kolo vyhrál.
Pak se zeptej "Hrát znovu? (ano/ne) " a podle odpovědi buď pokračuj, nebo skonči. Kdo koho poráží: kámen tupí nůžky, nůžky stříhají papír, papír balí kámen. Nahoru na první řádek nezapomeň: from random import randrange
from random import randrange
while True:
tvuj_tah = input("Tvůj tah (kamen/nuzky/papir): ")
# Počítač umí vylosovat jen číslo, tak si ho přeložíme na tah.
cislo = randrange(1, 4)
if cislo == 1:
pocitac = "kamen"
elif cislo == 2:
pocitac = "nuzky"
else:
pocitac = "papir"
print("Počítač hrál:", pocitac)
# Kdo vyhrál: kámen tupí nůžky, nůžky stříhají papír, papír balí kámen.
vyhrala_kamenem = tvuj_tah == "kamen" and pocitac == "nuzky"
vyhrala_nuzkami = tvuj_tah == "nuzky" and pocitac == "papir"
vyhrala_papirem = tvuj_tah == "papir" and pocitac == "kamen"
if tvuj_tah == pocitac:
print("Remíza.")
elif vyhrala_kamenem or vyhrala_nuzkami or vyhrala_papirem:
print("Vyhrála jsi!")
else:
print("Prohrála jsi.")
znovu = input("Hrát znovu? (ano/ne) ")
if znovu == "ne":
break
print("Díky za hru!")
Soubor: cviceni_bonusy/02_trojuhelnik_z_hvezdicek.py
Uživatel zadá číslo N. Vypiš z hvězdiček trojúhelník vysoký N – první řádek "*", druhý "**", ... N-tý má N hvězdiček. (Nápověda: text se dá opakovat: "*" * 3 je "***")
n = int(input("Zadej N: "))
for radek in range(1, n + 1):
print("*" * radek)
Soubor: cviceni_bonusy/03_ciferny_soucet.py
Uživatel zadá celé číslo. Sečti jeho číslice a součet vypiš. Například z 253 vyjde 10, protože 2 + 5 + 3 = 10. (Nápověda: cislo % 10 dá poslední číslici, cislo // 10 ji utrhne.) Zkus i záporné číslo. Aby to fungovalo, hodí se abs(cislo) – ta funkce zahodí minus.
Postupně utrháváme poslední číslici, dokud něco zbývá.
cislo = int(input("Zadej celé číslo: "))
cislo = abs(cislo) # u záporného čísla zahodíme minus
soucet = 0
while cislo > 0:
soucet = soucet + cislo % 10 # poslední číslice
cislo = cislo // 10 # utrhneme ji
print("Součet číslic je", soucet)