5. Ciklusok
Képzeld el, hogy ki kell íratnod a képernyőre egymás alá ezerszer, hogy "Szeretem a programozást!". Ugye, hogy nem írnál be ezer darab print parancsot kézzel? Erre találták ki a ciklusokat (ismétléses utasításokat).
A programozásban a ciklusok segítségével arra utasítjuk a számítógépet, hogy egy adott kódrészletet ismételjen meg addig, amíg egy feltétel igaz, vagy egy meghatározott alkalommal.
5.1. A feltételhez kötött ismétlés: a while ciklus
A while (amíg) ciklus akkor hasznos, ha nem feltétlenül tudjuk előre pontosan, hányszor kell valamit megismételni, de azt tudjuk, hogy milyen feltétel mellett kell folytatnia a munkát.
# Számoljunk el 1-től 5-ig
szam = 1
while szam <= 5:
print(szam)
szam = szam + 1 # Nagyon fontos: növeljük a változó értékét, különben végtelen ciklusba jutunk!
print("A ciklus véget ért.")
Hogyan működik?
1. A gép megnézi a while utáni feltételt (szam <= 5).
2. Ha a feltétel igaz, lefuttatja a benne lévő (behúzott) utasításokat.
3. Újraellenőrzi a feltételt. Ezt addig ismétli, amíg a feltétel hamissá nem válik.
⚠️ Vigyázat a végtelen ciklussal! Ha elfelejted növelni a ciklusváltozót (vagy a feltétel sosem vált át hamisra), a program a végtelenségig fog futni, és le kell kényszerítened. Ezt hívjuk végtelen ciklusnak.
5.2. A számlálós ciklus: a for ciklus
Ha pontosan tudjuk, hogy hányszor kell valamit megismételni, vagy végig akarunk menni egy sorozat elemein, a for ciklust használjuk. A Pythonban a for ciklus kifejezetten barátságos, és leggyakrabban a range() (tartomány) függvénnyel együtt alkalmazzuk.
range(5) a 0-tól indul, és 5 darab számot generál, vagyis 0, 1, 2, 3, 4 lesz az értéke (az 5-öt már nem veszi bele).
A range() függvény variációi:
range(3, 8): A 3-tól indul és a 7-ig megy (a 8-at itt sem éri el).range(1, 10, 2): 1-től 10-ig megy, de kettesével lépked (1, 3, 5, 7, 9).
5.3. Ciklusvezérlés: break és continue
Előfordulhat, hogy a ciklus futása közben olyan helyzet adódik, amikor azonnal be kell fejezni az egészet, vagy át kell ugrani az aktuális lépést. Ehhez két kulcsszót használhatunk:
break(Megszakítás): Teljesen kilöki a programot a ciklusból, azonnal megszakítja az ismétlést, és a ciklus utáni sorral folytatja a futást.continue(Folytatás): Átugorja a ciklusmag fennmaradó részét, és azonnal a következő ismétlésre (következő körre) urik.
# Példa a break használatára: keressük meg az első számot 1 és 10 között, ami osztható 7-tel
for szam in range(1, 11):
if szam % 7 == 0:
print(Fion: "Megvan a találat:", szam)
break # Nem keresgélünk tovább, kilépünk a ciklusból
5.4. Egymásbbe ágyazott ciklusok
Ahogy az elágazásoknál, úgy a ciklusoknál is megtehetjük, hogy egy ciklus belsejébe teszünk egy másik ciklust. Ezt hívjuk egymásba ágyazott ciklusnak. Ilyenkor a belső ciklus mindenegyes köréhez a külső ciklus egyszer lép tovább.
# Egyszerű szorzótábla töredék (1-től 3-ig)
for i in range(1, 4):
for j in range(1, 4):
print(f"{i} * {j} = {i * j}")
💻 Feladatok
- Páros számok: Írj egy programot egy
forciklus segítségével, amely kiírja a képernyőre a páros számokat 1 és 20 között! - Összegzés: Készíts egy programot, amely egy
whileciklus segítségével kiszámolja és kiírja az egész számok összegét 1-től 10-ig ($1 + 2 + 3 + ... + 10$). - Jelszóbekérő: Készíts egy programot
whileciklussal, amely addig kéri a felhasználótól a jelszót (inputfüggvénnyel), amíg az be nem írja a helyes titkos szót (pl."titok123"). Ha eltalálja, írja ki: "Helyes, beléphetsz!".