V Pythone existuje konštrukcia cyklu, ktorá opakuje vykonávanie postupnosti príkazov v závislosti od nejakej podmienky:
i = 10
while i >= 1:
print(i)
i -= 1
10
9
8
7
6
5
4
3
2
1
Vidíme podobnosť s podmieneným príkazom if
– vetvením. Tento nový príkaz postupne:
- zistí hodnotu podmienky, ktorá je zapísaná za slovom
while
- ak má táto podmienka hodnotu
False
, blok príkazov, ktorý je telom cyklu, sa preskočí a pokračuje sa na nasledovnom príkaze za celým while-cyklom (podobne ako v príkazeif
bez vetvyelse
), hovoríme, že sa ukončilo vykonávanie cyklu - ak má podmienka hodnotu
True
, vykonajú sa všetky príkazy v tele cyklu (v odsunutom bloku príkazov) - a znovu sa testuje podmienka za slovom
while
, t.j. celé sa to opakuje
Niečo zložitejšie – zisťovanie druhej odmocniny
cislo = float(input('zadaj číslo:'))
od = 0
do = cislo
x = (od + do) / 2
pocet = 0
while abs(x**2 - cislo) > 0.001:
if x**2 > cislo:
do = x
else:
od = x
x = (od + do) / 2
pocet += 1
print('druhá odmocnina', cislo, 'je', x)
print('počet prechodov while-cyklom bol', pocet)
- zvolíme si interval, v ktorom sa určite bude nachádzať hľadaný výsledok (hľadaná odmocnina), napríklad nech je to interval
<1, cislo>
(pre čísla väčšie ako 1 je aj odmocnina väčšia ako 1 a určite je menšia ako samotnecislo
) - ako
x
(prvý odhad našej hľadanej odmocniny) zvolíme stred tohto intervalu - zistíme, či je druhá mocnina tohto
x
väčšia ako zadanécislo
alebo menšia - ak je väčšia (
x
je už zbytočne veľké), tak upravíme predpokladaný interval, tak že jeho hornú hranicu zmeníme nax
- ak je ale menšia, upravíme dolnú hranicu intervalu na
x
- tým sa nám interval zmenšil na polovicu
- toto celé opakujeme, kým už nie je nájdené
x
dostatočne blízko k hľadanému výsledku, t.j. či sa nelíši od výsledku menej ako zvolený rozdiel (epsilon)
Nekonečný cyklus
Niekedy budete potrebovať použiť aj nekonečný cyklus, napríklad v budúcnosti si kúpite raspberry pi a budete chcieť merať teplotu, ktorú následne budete zapisovať. Tu je potrebné, aby program bežal stále. Ukážeme si zápis, je to veľmi jednoduché. Pozor, akonáhle ho spustíte, program bude bežať stále, takýto skript viete zastaviť stlačením kláves ctrl + c.
pocet = 1
while True:
print("spam", pocet)
pocet += 1
bude vypisovať slovo spam a vždy navýši premennú pocet o 1
Niekedy sa môžete stretnúť aj so zápisom while 1: v pythone je 1 považovaná za True.