Přejít na téma:
Cyklus for v Pythonu
Přejít na cvičení:
Python želva
Zobrazit na celou obrazovku

Váš denní počet odpovědí je omezen. Pro navýšení limitu či přístup do svého účtu s licencí se přihlaste.

Přihlásit se
Sdílet Zobrazit shrnutí tématu
Cyklus for v Pythonu

Cykly při programování využíváme pro opakování skupiny příkazů. Opakování označujeme často pojmem iterace.

Cyklus for využíváme, pokud dopředu víme, kolik opakování bude cyklus mít. V ostatních případech využíváme cyklus while.

Jednoduchý for cyklus

Základní využití cyklu for je pro prosté opakování sady příkazů. Pomocí for i in range(10) zopakujeme 10× sadu příkazů. Příkazy, které se mají opakovat, musíme odsadit. Takto tedy vypíšeme desetkrát Ahoj:

for i in range(10):

    print("Ahoj")

Řídící proměnná

V průběhu cyklu se mění hodnota řídící proměnné (ve výše uvedeném příkladu je to i). V každém opakování cyklu tak můžeme provést něco trochu jiného v závislosti na aktuální hodnotě této proměnné. Jakých hodnot řídící proměnná nabývá určuje část za in. Pokud použijeme základní range, bude se řídící proměnná postupně zvětšovat o jedničku. Tento cyklus například vypíše čísla od 0 do 9:

for i in range(10):

    print(i)

V rámci cyklu můžeme využívat více proměnných, pouze u řídící proměnné se však hodnota mění automaticky. Uvažme tento příklad:

y = 1

z = 2

for x in range(10):

    y = x + y + z

    print(x, y, z)

Řídící proměnnou cyklu je x, jehož hodnota se tedy bude postupně měnit (od 0 po 9). U proměnné y se bude hodnota měnit, protože v rámci cyklu máme přiřazovací příkaz do y. Hodnota proměnné z zůstane ve všech opakováních stejná, protože z není řídící proměnná ani do ní v cyklu nic nepřiřazujeme.

Využití range

Při základním použití kombinujeme for cyklus s funkcí range, která vrací interval čísel a řídící proměnná následně nabývá hodnot z tohoto intervalu.

Pozor: V informatice často počítáme od nuly (nikoliv od jedničky jako normální lidé). Na to narážíme i zde: range(n) vrací hodnoty od 0 do n-1.

Pokud funkci range zadáme dva parametry, tj. voláme range(a, b) dá nám interval čísel od a do b-1. Můžeme zadat i třetí parametr, který udává délku skoku. Příklady:

for x in range(5, 13): print(x, end=" ")     # 5 6 7 8 9 10 11 12

for x in range(5, 16, 3): print(x, end=" ")  # 5 8 11 14

for x in range(8, 0, -1): print(x, end=" ")  # 8 7 6 5 4 3 2 1

For cyklus se dá využít nejen ve spojení s range, ale i obecněji. Můžeme například použít seznamy:

for x in [3, 7, 10]:

    print(x)

Ukázky použití for cyklu

Sudá a lichá

Výpis informace o sudosti a lichosti prvních n čísel:

n = 20

for i in range(1, n+1):

    if i % 2 == 0:

        print(i, "je sudé")

    else:

        print(i, "je liché")

Součet řady čísel

Výpočet součtu čísel od 1 do n:

n = 10

s = 0

for i in range(1, n+1):

    s = s + i

print("Součet od 1 do", n, "je", s)

Mocniny dvojky

Výpis informace o prvních n mocninách dvojky:

n = 10

for x in range(1, n+1):

    print("Dvojka umocněna na", x, "je", 2**x)

Materiál k tisku: čtení kódu

Kromě níže uvedených interaktivních cvičení je k dispozici také materiál k tisku (cvičení na dobré rozlišení mezi několika podobnými kódy, u kterého se hodí dělat si poznámky na papír):


Fatal error: Uncaught TypeError: App\Service\PsService::getUserItemStatusByPs(): Argument #1 ($user) must be of type int, null given, called in /var/www/umimeprogramovat.cz/webroot/src/Snippet/Exercise/ItemBasedExercise/ItemBasedExercisePlugin.php on line 66 and defined in /var/www/umimeprogramovat.cz/webroot/src/Service/PsService.php:69 Stack trace: #0 /var/www/umimeprogramovat.cz/webroot/src/Snippet/Exercise/ItemBasedExercise/ItemBasedExercisePlugin.php(66): App\Service\PsService->getUserItemStatusByPs() #1 [internal function]: App\Snippet\Exercise\ItemBasedExercise\ItemBasedExercisePlugin->progress() #2 /var/www/umimeprogramovat.cz/webroot/src/Helper/ExerciseHeaderBuilder.php(20): call_user_func() #3 /var/www/umimeprogramovat.cz/webroot/src/Template/BaseExercise/default.php(26): App\Helper\ExerciseHeaderBuilder->render() #4 /var/www/umimeprogramovat.cz/webroot/src/Controller/BaseExercise.php(119): require('...') #5 /var/www/umimeprogramovat.cz/webroot/exercise/turtlePython.php(21): App\Controller\BaseExercise->renderDefault() #6 /var/www/umimeprogramovat.cz/webroot/index.php(124): include('...') #7 {main} thrown in /var/www/umimeprogramovat.cz/webroot/src/Service/PsService.php on line 69