Vezérlési szerkezetek - Ciklusok

A ciklusok (más néven loopok) olyan programozási struktúrák, amelyek lehetővé teszik, hogy egy adott kódblokkot többször futtassunk.

A ciklusok használatával hatékonyan lehet ismétlődő feladatokat végrehajtani a programokban.

Pythonban két ciklust ismerünk: while és for ciklus

WHILE ciklus

A while ciklust akkor használjuk, ha nem tudjuk előre, hogy hányszor kell futtatni a kódblokkot, de van egy feltétel, ami alapján eldönthetjük, hogy folytatjuk-e a futtatást.

A while ciklust szokták elöltesztelő ciklusnak is hívni, mivel először megvizsgálja, hogy egy általunk megadott feltétel fennáll‑e, és ha igen, akkor lefutnak a ciklusban lévő parancsok, a folyamat pedig mindaddig ismétlődik, amíg a megadott feltétel fennáll.

Általános formája:

while feltétel: # kódblokk

A ciklus addig fut, amíg a feltétel igaz.

Példaként, írjunk egy while ciklust, amely a számokat írja ki 1-től 5-ig. A ciklus addig ismétlődik, amíg az i változó értéke eléri az 5-öt.

i = 1 while i <= 5: print(i) i += 1 # i = i + 1

A fenti példában az i változó értéke folyamatosan növekszik eggyel minden egyes cikluson belül, amíg el nem éri az 5-öt. A ciklusmagban található print() függvény kiírja az aktuális i értékét, majd az i értéke növekszik eggyel. A ciklus futása tehát 5-ször ismétlődik, mivel a ciklusfeltétel igaz minden egyes futás után, amíg az i értéke el nem éri az 5-öt.

A while ciklust sokféle módon lehet alkalmazni, azonban fontos, hogy vigyázzunk az olyan végtelen ciklusokkal, amelyek sosem állnak le, mert azok a program futását blokkolhatják. Egy végtelen ciklust akkor hozunk létre, ha a feltétel sosem válik hamisra.

Példák:
A program addig kérdezi a felhasználótól, hogy mondja-e még egyszer, hogy "Vidd ki a szemetet!", amíg a felhasználó nem válaszol "n"-nel.

folytatja = True while folytatja: print('Vidd ki a szemetet!') valasz = input('Mondjam még egyszer? (i/n)') if valasz == 'n': folytatja = False print('>> Program vége! <<')

A program addig kér a felhasználótól új számot, amíg az nincs 5 és 10 között.

szam = int(input('Adj meg egy számot 5 és 10 között! ')) # while szam < 5 or 10 < szam: while not 5 <= szam <= 10: szam = int(input('Helytelen érték! Adj meg egy számot 5 és 10 között! ')) print('Rendben!')

Feladatok:

  1. Írj egy programot, amely kiírja a páros számokat 1 és 10 között!
  2. Írj egy programot, amely csökkenő sorrendben írja ki a számokat 1 és 10 között!
  3. Írj egy programot, amely kiírja a páratlan számokat csökkenő sorrendben 1 és 10 között!
  4. Írj egy programot, amely a felhasználó által meghatározott alkalommal írja ki a bekért szöveget!
  5. Írj egy programot, amely a felhasználótól páros számot kér be. Amennyiben a megadott szám páratlan, újra és újra megtörténik az adatbekérés mindaddig, amíg végül páros számot nem ad meg a felhasználó.
  6. Írj egy programot, amely összeadja az 1-től 10-ig terjedő számokat.
  1. Írj egy programot, amely addig ismétli a "Hello!" szöveget, amíg a felhasználó nem ír be egy "q" karaktert.
  1. Írj egy programot, amely megszámolja, hány számot ad meg a felhasználó, amíg nem ír be egy 0-t.
  1. Írj egy programot, amely addig kérdez egy kódot a felhasználótól, amíg az helyes nem lesz. Ha eltalálta, akkor írja ki, hogy "Eltaláltad!" ellenkező esetben írja ki, hogy "Nem talált!" és kérje újra a kódot.

Újabb feladatok:

  1. Felhasználói beviteli számok kiírása
    Írj egy programot, amely folyamatosan kér be számokat a felhasználótól, és kiírja őket, amíg a felhasználó nem ír be egy negatív számot. A program végén írjuk ki, hogy “A program leállt.”
  1. Számtani sorozat összegzése
    Írj egy programot, amely bekér a felhasználótól egy pozitív egész számot, és kiírja az első n szám összegét.
  1. Számkitaláló játék
    A játék addig megy, amíg ki nem találjuk a számot. A program generáljon egy 1-50 közötti számot. A program kérje be a felhasználótól a tippet, majd mondja meg, hogy a gondolt szám kisebb vagy nagyobb. (Pl. A gondolt szám kisebb / nagyobb a tippnél!) Ha eltalálta, akkor a program a következőt írja ki: "Gratulálok! Eltaláltad!"
  1. Faktoriális számítás
    Kérj be egy nem negatív egész számot és számold ki a faktoriálisát!
    Az eredményt a következő formában írja ki a program: "A (bekért szám) faktoriálisa: (faktoriális)"
    Faktoriális: 1-től a megadott számig az összes pozitív egész szám szorzata. (Pl: 4! = 1x2x3x4 = 24)
  1. Számok párba állítása Kérj be egész számokat a felhasználótól, amíg 0-t nem ír be, és írd ki, hogy hány darab számot adott meg a felhasználó és ebből hány páros és hány páratlan szám volt.
    A kiírás a következő formában legyen: "A megadott N darab számból a páratlanok száma: X, a párosa száma: Y."
  1. Minimum és maximum keresés
    Addig kérjen be a program pozitív egész számokat, amíg a felhasználó nem ír be 0-t. A beírt számok közül keresd meg a minimumot és a maximumot és írasd ki!
    A kiírás a következő formában legyen: "Beírt N darab szám közül a minimum: min, a maximum: max érték volt."
    (N: a 0 megadásáig beírt számok darabszáma, min: a beírt legkisebb szám, max: a beírt legnagyobb szám)
  1. Kérj be számokat a felhasználótól, amíg 0-t nem ad meg, és írd ki, hogy az egyes számok oszthatók-e 3-mal vagy 5-tel.
  1. Kockadobás szimuláció
    Írj egy programot, amely szimulál egy kockadobást! A felhasználó választhatja meg, hányszor akar dobni, és a program mindegyik dobás eredményét kiírja. A program számolja ki, hogy mennyi volt a kockadobások összege. A következő formában írja ki az eredmény1: "N darab kockadobás összege: XXX.", ahol N: a dobások száma, XXX: a dobások összege.

Megoldások

  1. Tanfolyam értékelés
    Készíts egy python alkalmazást, amely lehetővé teszi a felhasználó számára, hogy értékeléseket adjon meg egy tanfolyamról. Az értékelések egy 1-5 skálán adhatók meg, ahol:
    1. Nagyon elégedetlen
    2. Elégedetlen
    3. Közepes
    4. Elégedett
    5. Nagyon elégedett

A felhasználó a „0” megadásával fejezheti be az értékelések beírását. A program a következő feladatokat végezze el: