A Python két alapvető ismétléses vezérlési szerkezettel rendelkezik: - `while` ciklus - `for` ciklus # A `while` ciklus A `while` ciklus addig hajt végre egy utasításblokkot, amíg a feltétel **igaz** (`True`). A `while` ciklus használatához előre el kell készíteni bizonyos változókat. A következő példában egy indexváltozót (`i`), amelynek értékét a `while` ciklus előtt 1-re állítunk. >[!example] Kiírjuk az `i` értékét, amíg `i` kisebb mint 6: >```python >i = 1 >while i < 6: > print(i) > i += 1 > > # Kimenet: > # 1 > # 2 > # 3 > # 4 > # 5 >``` >[!note] Megjegyzés >Ne felejtsük el növelni az `i` értékét, különben a ciklus **végtelen ciklussá** válik. ## A `break` utasítás A `break` utasítással akkor is megszakíthatjuk a `while` ciklust, ha a feltétele még igaz. >[!example] Kilépünk a ciklusból, amikor `i` értéke 3 >```python >i = 1 >while i < 6: > print(i) > if i == 3: > break > i += 1 > ># Kimenet: ># 1 ># 2 ># 3 >``` ## A `continue` utasítás A `continue` utasítással az aktuális iterációt kihagyjuk, és folytatjuk a következővel. >[!example] Átugorjuk az iterációt, amikor `i` értéke 3 >```python >i = 1 >while i < 6: > i += 1 > if i == 3: > continue > print(i) > ># Kimenet: ># 1 ># 2 ># 4 ># 5 >``` ## Az `else` ág a `while` után Az `else` rész akkor fut le, amikor a `while` feltétele **hamissá válik**, vagyis a ciklus természetes módon befejeződik (nem `break`-kel). >[!example] Kiírunk egy üzenetet, ha a feltétel már nem igaz >```python >i = 1 >while i < 6: >print(i) > i += 1 >else: > print("i már nem kisebb mint 6") > ># Kimenet: ># 1 ># 2 ># 3 ># 4 ># 5 ># i már nem kisebb mint 6 >``` # A `for` ciklus A `for` ciklust akkor használjuk, amikor végig szeretnénk menni egy sorozaton (például listán, tuple-ön, szótáron, halmazon vagy sztringen). A `for` ciklussal egy utasításblokk a lista, tuple, halmaz stb. minden elemére lefut egyszer. >[!example] Egy lista minden elemének kiírása >```python >gyumolcsok = ["alma", "banán", "meggy"] >for gyumolcs in gyumolcsok: > print(gyumolcs) > > # Kimenet > # alma > # banán > # meggy >``` >[!note] Megjegyzés >A `for` ciklushoz **nem szükséges előre létrehozni egy indexváltozót**. ## Egy sztring bejárása A sztringek is bejárhatóak – karakterek sorozatát tartalmazzák. >[!example] A "banán" szó bejárása >```python >for betu in "banán": > print(betu) > ># Kimenet ># b ># a ># n ># á ># n >``` ## A `break` utasítás A `break` utasítással megállíthatjuk a ciklust, még mielőtt az végigérne az összes elemen. >[!example] Lista bejárásának megszakítása a `break` utasítással >```python >gyumolcsok = ["alma", "banán", "meggy"] >for gyumolcs in gyumolcsok: > print(gyumolcs) > if gyumolcs == "banán": > break > > # Kimenet > # alma > # banán >``` A `break` utasítás blokkon belüli elhelyezése kritikus jelentőségű, ugyanis jelentősen megváltoztathatja a program működését. >[!example] A `print` és a `break` utasítások felcserélt sorrendben >```python >gyumolcsok = ["alma", "banán", "meggy"] >for gyumolcs in gyumolcsok: > if gyumolcs == "banán": > break > print(gyumolcs) > > # Kimenet > # alma >``` ## A `continue` utasítás A `continue` utasítással kihagyjuk az aktuális iterációt, és továbblépünk a következőre. >[!example] A `continue` utasítás alkalmazása >```python >gyumolcsok = ["alma", "banán", "meggy"] >for gyumolcs in gyumolcsok: > if gyumolcs == "banán": > continue > print(gyumolcs) > > # Kimenet > # alma > # meggy >``` ## A `range()` függvény Ha egy kódrészletet **meghatározott számú alkalommal** szeretnénk futtatni, használhatjuk a `range()` függvényt. A `range()` egy számsorozatot ad vissza, amely: - alapértelmezés szerint 0-tól indul, - 1-esével növekszik, - és egy megadott számnál áll meg (a végérték **nem** része a sorozatnak). >[!example] A `range` használata >```python >for x in range(6): > print(x) > > # Kimenet > # 0 > # 1 > # 2 > # 3 > # 4 > # 5 >``` >[!example] A `range` használata kezdőértékkel >```python >for x in range(2, 6): > print(x) > > # Kimenet > # 2 > # 3 > # 4 > # 5 >``` >[!example] A `range` használata kezdőértékkel és lépésközzel >```python >for x in range(2, 10, 3): > print(x) > > # Kimenet > # 2 > # 5 > # 8 >``` ## `else` ág a `for` ciklusban A `for` ciklus `else` ága a ciklus **lefutása után egyszer** fut le, ha a ciklust nem szakította meg `break`. >[!example] `for` ciklus `else` ággal >```python >for x in range(6): > print(x) >else: > print("Vége!") > ># Kimenet ># 0 ># 1 ># 2 ># 3 ># 4 ># 5 ># Vége! >``` >[!example] `for` ciklus `else` ággal és `break` utasítással >```python >for x in range(6): > if x == 3: > break > print(x) >else: > print("Vége!") > ># Kimenet ># 0 ># 1 ># 2 >``` ## Egymásba ágyazott ciklusok Az egymásba ágyazott ciklus azt jelenti, hogy egy ciklus **cikluson belül** van. A belső ciklus **minden külső iteráció alatt végigfut**. >[!example] Egymásba ágyazott ciklusok >```python >melleknevek = ["piros", "nagy", "ízletes"] >gyumolcsok = ["alma", "meggy"] > >for jelzo in melleknevek: > for gyumolcs in gyumolcsok: > print(f"{jelzo} {gyumolcs}") > ># Kimenet ># piros alma ># piros meggy ># nagy alma ># nagy meggy ># ízletes alma ># ízletes meggy >``` ## A `pass` utasítás A `for` ciklus **nem lehet üres**, de ha valamiért nincsenek utasítások benne, a `pass` használatával elkerülhetjük a hibát. >[!example] `pass` utasítás használata >```python >for x in [0, 1, 2]: > pass >``` # Feladatok >[!task] **1. feladat** > Írj egy `while` ciklust, ami összegzi a felhasználó által megadott 5 egész számot, majd kiírja az összeget! >[!task] **2. feladat** > Írj egy `for` ciklust, ami kiszámolja 1-től 100-ig a páros számok összegét! >[!task] **3. feladat** >Készíts egy programot, ami egy listában keres egy szót. Ha megtalálja, írja ki az indexét, különben írja ki: „Nincs meg”! (*Tipp:* használd `for` + `else`-t.) >[!task] **4. feladat** >Adott egy névlista, készíts egy másik listát, ami csak az „a” betűt tartalmazó neveket tartalmazza! # Források - https://www.w3schools.com/python/python_while_loops.asp (utolsó hozzáférés dátuma: 2025. 11. 29.) - https://www.w3schools.com/python/python_for_loops.asp (utolsó hozzáférés dátuma: 2025. 11. 29.)