Listák bejárása Pythonban

Listák bejárása Pythonban

Python

Listák bejárása

A listák létrehozása még csak az első kör. Attól, hogy már tudsz ilyet írni:

tantargyak = [„matek”, „töri”, „tesi”, „infó”]

még nem sok minden történik.
A programozás ott kezd érdekes lenni, amikor végig is tudsz menni a lista elemein. Ez a lista bejárása. Nem egyszerre akarjuk látni az egészet, hanem sorban dolgozunk vele. 

Python while ciklus működése illusztráción

Lista bejárása for ciklussal

Ez a legegyszerűbb és legbarátibb megoldás. 

  • A for ciklus sorban végigmegy a lista elemein. 
  • Az aktuális elemet beteszi a tantargy valtozóba
  • A ciklusmag minden elemnél egyszer lefut. 

Ez a módszer akkor a legjobb, ha magukra az értékekre vagy kiváncsi, és nem érdekel, hányadik helyen állnak. Másik példa:

 

Számok bejárása range() segítségével

A range akkor kell, amikor nem egy lista elemein akarsz közvetlenül végigmenni, hanem egy számtartományon. 

A megadott végérték, amint látható, nem része a tartománynak. 10 darab számot ad vissza, de itt a 0 az első. 

Két paraméterrel

Az első a kezdőérték (2), a második szám a végérték. A kezdőérték benne van, a végérték nincs. 

Három paraméterrel

2 a kezdőérték, 20 a végérték, 3 pedig a lépésköz. A range(start, stop, step) formátumot a Python built-in dokumentációja is így írja le, és a range valójában egy beépített sorozattípus, nem sima lista.

Még egy példa:

Ha számolni kell, vagy valamit pl 5-ször megismételni, vagy ha indexekkel akarsz dolgozni, a range() gyakran előkerül. 

Milyen indexen van az adott elem?

Van ez a lista: tantargyak = [„matek”, „töri”, „tesi”, „infó”] és járjuk be újra:

for tantargy in tantargyak:
     print(tantargy)

Ez a legletisztultabb forma. De mi van akkor, ha azt is szeretnéd tudni, hogy milyen indexen van az adott elem? Na itt jönnek a következő módszerek:

Indexek kezelése külön változóval

Ez még teljesen érthető kezdő megoldás:

  • Létrehozol egy index változót 0 értékkel. 
  • Minden körben kiírod az aktuális indexet és elemet
  • A végén növeled az indexet eggyel. 

Ennél azonban vannak szebb megoldások is. 

 

Lista bejárása indexekkel (range(len(lista))

A len() megadja, hány elem van a listában. A Python dokumentációja szerint a sorozatok indexei 0-tól n-1-ig tartanak, ahol n a hossz. Ezért működik szépen együtt a len() és a range().

Ebben a példában: 

  • len(tantargyak) -> 4
  • range(4) -> 0, 1, 2, 3, Ezek lesznek az indexek. 
  • A tantargyak[index] segítségével elérjük az adott elemet. 

Ez akkor hasznos, ha:

  • index alapján akarsz módosítani
  • két lista azonos helyű elemeit akarod összehasonlítani
  • szükséged van a pozícióra is, nem csak az értékre

A legkényelmesebb megoldás: enumerate()

Ez az a rész, amit érdemes megszeretni. 

Az enumerate() a Python dokumentációja szerint egy olyan objektumot ad vissza, amely minden elemhez egy sorszámot és az értéket együtt adja, alapértelmezés szerint 0-ról indulva. Tehát ilyen párokat ad: 

(0, „matek”)
(1, „töri”)
(2, „tesi”)
(3, „infó”)

A for index, tantargy in … sor ezeket rögtön két változóba bontja szét:

  • index
  • tantargy

A számozás természetesen nem csak nulláról indulhat: 

Melyiket mikor érdemes használni?

 

1. for elem in lista: 

  • ha csak az elemek kellenek, nem érdekel az index

2. for index in range(len(lista))

  • ha ténylegesen indexszel akarsz dolgozni
  • index alapján akarsz elemeket elérni
  • több lista azonos indexű elemeit hasonlítod össze

3. for index, elem in enumerate(lista)

  • használd akkor, ha kell az index is, az elem is és nem akarsz kézzel számlálgatni

Gyakorlás

1. Tantárgyak kiírása for ciklussal

Hozz létre egy tantargyak nevű listát legalább 5 tantárggyal. Járd be a listát for ciklussal, és írd ki az elemeket egyesével.

    Megoldás
    tantargyak = [„matek”, „töri”, „magyar”, „biológia”, „infó”]
    index = 0
    for tantargy in tantargyak:
        print(index, tantargy)
        index += 1

    tantargyak = [„matek”, „töri”, „magyar”, „biológia”, „infó”]
    for index in range(len(tantargyak)):
        print(index, tantargyak[index])

    tantargyak = [„matek”, „töri”, „magyar”, „biológia”, „infó”]
    for index, tantargy in enumerate(tantargyak):
        print(index, tantargy)
           

    2. Kedvenc előadók listája

    Hozz létre egy listát 4 kedvenc előadóval vagy zenekarral. Járd be a listát, és minden elem elé írd ki ezt a szöveget:

    Most ezt hallgatnám:

      Megoldás
      zenekarok = [„Ed Sheeran”, „Lost Frequencies”, „Yungblud”, „Imagine Dragons”]
      for zenekar in zenekarok:
          print(„Most ezt hallgatnám: „, zenekar)

      3. Számok kiírása range() segítségével

      Írj programot, amely range() használatával kiírja a számokat:

      • 0-tól 9-ig
      • 3-tól 12-ig
      • 2-es lépésközzel 0-tól 20-ig

        Megoldás
        for szam in range(10):
            print(szam)

         

        for szam in range(3, 13):
            print(szam)

         

        for szam in range(0, 21, 2):
            print(szam)
               

        4. Visszaszámlálás

        Írj programot, amely 10-től 1-ig írja ki a számokat range() segítségével.

          Megoldás
          for szam in range(10, 0, 1):
              print(szam)
                 

          5. Listaelemek indexszel – range(len(lista))

          Legyen egy filmek lista 5 filmmel és írd ki az indexet és a film címét.

            Megoldás
            filmek = [„Itt érzem magam otthon”, „Hadik”, „Toxikoma”, „Seveled”, „Aranyélet”]

             

            for index, film in enumerate(filmek):
                print(index, film)
                   

            6. Enumerate gyakorlása

            Legyen egy jatekok lista 5 játékkal. Használj enumerate()-ot, és írd ki az indexet és az elemet.

            Megoldás
            filmek = [„Itt érzem magam otthon”, „Hadik”, „Toxikoma”, „Seveled”, „Aranyélet”]

             

            for index, film in enumerate(filmek):
                print(index, film)
                   

            7. Sorszámozás

            Írj programot egy teendők listával, amely enumerate segítségével számozza meg a teendőket 1-től indulva

            Megoldás
            teendok = [„tanulni”, „mosni”, „rendet rakni”, „kutyát sétáltatni”, „bevásárolni”, „olvasni”]
            for index, teendo in enumerate(teendok, start=1):
                print(index, teendo)

            8. Páros indexű elemek

            Legyen egy lista 6 elemmel. Járd be range(len(lista)) segítségével, és csak azokat az elemeket írd ki, amelyek páros indexen vannak.

              Megoldás
              lista = [„aelem”, „belem”, „celem”, „delem”, „eelem”, „felem”]
              for index in range(len(lista)):
                  if index % 2 == 0:
                      print(index, lista[index])
                     

              9. Rövid szavak listája

              Legyen egy lista különböző hosszúságú szavakkal. Járd be a listát for ciklussal, és csak azokat írd ki, amelyek 5 karakternél rövidebbek.

              Megoldás
              lista = [„bögre”, „kulcs”, „autó”, „mozi”, „bicikli”]
              for index in range(len(lista)):
                  if len(lista[index]) < 5:
                      print(index, lista[index])
                     

              10. Kombinált gyakorló

              Kérj be a felhasználótól 5 szót egy listába. Ezután:

              • írd ki az elemeket sima for ciklussal
              • írd ki az indexet és az elemet range(len(lista)) segítségével
              • írd ki az indexet és az elemet enumerate() használatával is

                Megoldás
                lista = []
                darab = 0

                while darab < 5:
                    szo = input(„Adj meg egy szot: „)
                    lista.append(szo)
                    darab += 1

                for szo in lista:
                    print(szo)

                for index in range(len(lista)):
                    print(index, lista[index])

                for index, szo in enumerate(lista):
                    print(index, szo)
                       
                Vidám anime lány számítógépnél grafikát készít, Inkscape alapok tanulása

                Ha a ciklusok működését a hivatalos leírás alapján is szeretnéd megnézni, olvasd el a Python vezérlési szerkezetekről szóló tutorialját.

                Ha szeretnél továbbhaladni a Python programozással, lépj a következő leckére:

                Listák létrehozása

                Listák létrehozása

                Python

                Listák létrehozása

                Ha Pythonban programozol, nagyon gyorsan eljön az a pont, amikor már nem elég egyetlen adatot eltárolni. Oké, egy név, egy szám vagy egy életkor még simán mehet egy változóba. De mi van akkor, ha több hónapot, több nevet vagy több eredményt szeretnél együtt kezelni?

                Na itt lépnek színre a listák.

                Python while ciklus működése illusztráción

                A lista Pythonban egy olyan adattípus, amiben több elemet tudsz eltárolni egyetlen név alatt. Ez azért hasznos, mert nem kell külön változót létrehoznod minden egyes adathoz. Elég egy lista, és máris átláthatóbban tudsz dolgozni.

                Ebben a bejegyzésben megnézzük, hogyan működik a listák létrehozása Pythonban, hogyan kell őket helyesen megadni, és hogyan tudod kiíratni a tartalmukat.

                Python listák létrehozása

                Amikor programot írunk, gyakran szeretnénk adatokat tárolni. Ezek lehetnek például hónapok, tantárgyak, pontszámok vagy akár bevásárlólista-elemek. Egy-egy adatot könnyen el tudunk menteni változókba, de ha sok összetartozó adatunk van, akkor sokkal jobb megoldás a lista.

                A lista abban segít, hogy több elemet egyetlen változóban tudjunk tárolni.

                Miért jó a lista?

                Képzeld el, hogy el akarod tárolni az év hónapjait. Megtehetnéd így is:

                • honap1 = „január”
                • honap2 = „február”
                • honap3 = „március”

                Ez működik, csak hosszú és nehezen kezelhető. Elég hamar káosz lesz belőle. A Python erre ad egy sokkal tisztább megoldást: a listát. 

                Lista létrehozása Pythonban

                A lista létrehozásához megadjuk a lista nevét, írunk egy egyenlőségjelet, majd szögletes zárójelek közé felsoroljuk a lista elemeit.

                honapok = [„január”, „február”, „március”, „április”, „május”, „június”, „július”, „augusztus”, „szeptember”, „október”, „november”, „december”]

                Ebben a példában:

                • a lista neve: honapok
                • az egyenlőségjel után adjuk meg a lista értékét
                • a lista elemei [] közé kerülnek
                • az elemeket vesszővel választjuk el egymástól
                • mivel itt szövegeket tárolunk, ezért idézőjelbe kell írni őket

                Ez nagyon fontos: ha a lista elemei szövegek, akkor idézőjel kell. Ha számok, akkor nem.

                Egy számlista így nézne ki:
                szamok = [3, 7, 12, 25, 40]

                A lista elemei lehetnek különböző típusúak is: 

                adatok = [„Anna”, 16, True]

                Ez technikailag teljesen jó, de kezdőként érdemes azonos típusú adatokat egy listában tárolni, mert úgy átláthatóbb marad a program.

                Üres lista létrehozása: olyan is van, hogy előre létrehozol egy listát, de még nincs benne semmi:

                nevek = []

                Ez egy üres lista. Később lehet elemeket hozzáadni.

                Lista tartalmának kiiratása

                Ha szeretnéd megnézni mi van a listában, akkor egyszerűen kiirathatod print() segítségével:

                print(honapok)

                A program ilyenkor kiírja a teljes lista tartalmát. A kimenet valami ilyesmi lesz:  

                [‘január’, ‘február’, ‘március’, ‘április’, ‘május’, ‘június’, ‘július’, ‘augusztus’, ‘szeptember’, ‘október’, ‘november’, ‘december’]

                A Python úgy mutatja meg a lista elemeit, ahogy eltárolta. 

                A lista szebb kiiratása

                Ha kulturáltabban szeretnéd megjeleníteni a lista elemeit, használhatod a join() metódust:

                print(„, „.join(honapok))
                print(” | „.join(honapok))

                A join összefűzi a lista elemeit egyetlen szöveggé, és közéjük beszúrja azt az elválasztót, amit megadtál. Például a „, „.join(honapok) – vesszővel választja el a hónapok neveit: január, február, március.
                A ” | „.join(honapok) függőleges vonallal választja el őket: január | feburár | március
                A join() csak akkor működik jól, ha a lista elemei szövegek.  

                A lista hosszának lekérdezése len() függvénnyel

                Ha szeretnéd tudni, hány elem van a listában, használd a len() függvényt: 

                print(len(honapok))

                ez megadja a lista elemeinek számát. Ha a hónapok lista 12 hónapot tartalmaz, akkor a kimenet: 12. A len függvény gyakran előkerül Pythonban, érdemes megjegyezni- 

                Adott listaelem kiíratása

                Ha nem az egész listára vagyunk kiváncsiak, hanem csak egyetlen elemre, akkor index alapján tudsz hivatkozni rá. 
                print(honapok[0])
                Ez a lista első elemét írja ki. : január. 

                A lista indexelése nulláról indul. Ez elsőre kicsit fura lehet, de programozásban teljesen alap. 

                Több listaelem elérése szeleteléssel

                Nemcsak egyetlen elemet kérhetsz le, hanem a lista egy részét is. Ezt szeletelésnek hívjuk. 
                print(honapok[0:2] – ez a 0 és az 1. indexű elemeket írja ki, vagyis: január február.
                Szeletelésnél a kezdő index még benne van, a záró index már nincs. Azt jelenti: induljon a 0. indextől és álljon meg a 2. index előtt. 

                Kiíratás egy adott helytől a lista végéig 

                Ha egy bizonyos elemtől kezdve az összes többit szeretnéd látni, akkor a második indexet el is hagyhatod: 

                print(honapok[2:])

                Ez a 2. indexű elemtől kezdi a kiírást, tehát: március, április, május …

                Negatív indexelés

                A Pythonban lehet visszafelé is számolni: 

                print(honapok[-2]

                Ez a lista végétől számított elemet adja vissza, azaz november lesz. Nem azt jelenti, hogy visszafelé végigmegy a listán, hanem a végétől számolod az indexeket:

                honapok[-1] – december
                honapok[-2]  november
                honapok[-3] – október …

                Ugyanez működik szövegeknél is

                A szeletelés nemcsak listáknál működik, hanem stringeknél is, mert a szöveg is egy karakterből álló sorozat. 

                szo = „Python”
                print(szo[:4] ->  kimenet: Pyth. Itt az első 4 karaktert fogja kiírni, ugyanazon a logika mentén, mint a listáknál. 

                Szavak bekérése és listán tárolása

                Most nézzünk egy nagyon hasznos példát: azt szeretnénk, hogy a felhasználó több szót adjon meg, és ezeket egy listában tároljuk.

                Üres lista létrehozása

                Először létrehozunk egy üres listát:

                szavak = []

                Ide kerülnek majd a felhasználó által megadott szavak. Egy változó kezdőérték nélkül Ezután létrehozunk egy változót:

                szo = None

                A None azt jelenti, hogy a változónak egyelőre nincs valódi értéke. Ez egy gyakori megoldás Pythonban, ha később akarunk majd értéket adni neki. 

                Szavak bekérése ciklusban

                A cél az, hogy addig kérünk be szavakat, amíg a felhasználó nem nyom csak egy Entert. 

                szavak = []
                szo = None

                 

                while szo != „”:
                    szo = input(„Adj meg egy szót: „)

                 

                    if szo != „”:
                        szavak.append(szo)
                print(szavak)

                Hogyan működik ez?

                • létrehozunk egy üres listát
                • bekérünk egy szót a felhasználótól
                • ha a beírt szöveg nem üres, hozzáadjuk a listához az append() segítségével
                • ha a felhasználó üresen hagyja a sort és csak Entert nyom, a ciklus leáll

                Az append() egy listaelem-hozzáadó művelet: szavak.append(szo) -> a szo változó aktuális értékét hozzáfűzik a lista végéhez. 

                Gyakorlás

                1. Hónapok listája

                Hozz létre egy honapok nevű listát, amely az év első 6 hónapját tartalmazza.

                Feladatok:

                • írasd ki az egész listát
                • írasd ki a lista hosszát
                • írasd ki az első elemet
                • írasd ki a harmadik elemet
                • írasd ki az utolsó elemet

                Megoldás
                honapok = [„január”, „február”, „március”, „április”, „május”, „június”]

                print(honapok)
                print(len(honapok))
                print(honapok[0])
                print(honapok[2])
                print(honapok[5]) vagy
                print(honapok[-1]
                       

                2. Szebb kiíratás

                A honapok listát írasd ki többféleképpen:

                • vesszővel elválasztva
                • | jellel elválasztva
                • - jellel elválasztva

                Megoldás
                print(„, „.join(honapok))
                print(” | „.join(honapok))
                print(” – „.join(honapok))

                3. Szeletelés gyakorlása

                Egy napok listában tárold a hét napjait.

                Feladatok:

                • írasd ki az első 3 napot
                • írasd ki a 2. elemtől a végéig
                • írasd ki az utolsó 2 elemet
                • írasd ki a lista középső részét szeleteléssel

                Megoldás
                nap = [„hétfő”, „kedd”, „szerda”, „csütörtök”, „péntek”, „szombat”, „vasárnap”]
                print(nap[:3])
                print(nap[1:])
                print(nap[5:])
                print(nap[2:4]) vagy print[-2:]
                       

                4. Kedvenc kaják

                Készíts egy kajak nevű listát legalább 5 étellel.

                Feladatok:

                • írasd ki az egész listát
                • írasd ki a második kedvencedet
                • írasd ki az első 3 ételt
                • írasd ki a lista utolsó elemét negatív indexeléssel
                • írasd ki a lista hosszát

                Megoldás
                kajak = [„banán”, „eper”, „csoki”, „sajt”, „croissant”]
                print(kajak)
                print(kajak[1])
                print(kajak[:3])
                print(kajak[1])
                print(len(kajak))
                       

                5. String és lista közti hasonlóság

                Hozz létre egy változót:

                szo = „programozas”

                • írasd ki az első 4 karaktert
                • írasd ki az utolsó 3 karaktert
                • írasd ki a 2. karaktertől az 5. karakterig
                • figyeld meg, hogy ez mennyire hasonlít a listák szeletelésére

                Megoldás
                szo = „programozas”
                print(szo[:4])
                print(szo[3:])
                print(szo[1:5])
                       

                6. Szóbekérős lista

                Készíts programot, amely szavakat kér be a felhasználótól, és eltárolja őket egy listában.

                Szabály:

                • addig kérjen be új szót, amíg a felhasználó nem nyom egy üres Entert

                A végén:

                • írasd ki a teljes listát
                • írasd ki, hány szót adott meg a felhasználó

                  Megoldás
                  szavak = []
                  szo = None

                  while szo != „”:
                      szo = input(„Adj meg egy szót: „)
                      if szo != „”:
                          szavak.append(szo)
                  print(szavak)
                  print(len(szavak))
                         

                  7. Bevásárlólista

                  Kérj be a felhasználótól bevásárlólista-elemeket, és tárold őket listában.

                  A végén:

                  • írasd ki a lista elemeit egy sorban vesszővel elválasztva
                  • írasd ki az első és az utolsó elemet
                  • írasd ki a lista hosszát

                  ➡️ Extra: csak akkor add hozzá a listához az elemet, ha nem üres a megadott szöveg.

                  Megoldás
                  lista = []
                  tetelek = None

                  while tetelek != „”:
                      tetelek = input(„Mit vásárolsz ma? „)
                      if tetelek != „”:
                          lista.append(tetelek)
                  print(„, „.join(lista))


                  if len(lista) > 0:
                      print(lista[0], lista[1])

                  print(len(lista))

                  8. Osztálynévsor

                  Legyen egy lista 5 tanuló nevével.

                  Feladatok:

                  • írasd ki a teljes listát
                  • írasd ki a 3. tanuló nevét
                  • írasd ki az első 2 tanulót
                  • írasd ki az utolsó 3 tanulót
                  • írasd ki a neveket pontosvesszővel elválasztva

                  Megoldás
                  lista = [„Kiss Adam”, „Nagy Géza”, „Kovács Anna”, „Király Elek”, „Zord Bea”]

                  print(lista)
                  print(lista[2])
                  print(lista[:2])
                  print(lista[3:])
                  print(„; „.join(lista))
                         

                  9. Top 3 kedvenc

                  Kérj be a felhasználótól 3 kedvenc filmet vagy zenét, és tárold el listában.

                  A végén:

                  • írasd ki a teljes listát
                  • írasd ki őket | elválasztással
                  • írasd ki az első kedvencet
                  • írasd ki az utolsó kedvencet
                  • írasd ki a lista hosszát

                      Megoldás
                      lista = []

                      while len(lista) < 3:
                          film = input(„Melyik a kedvenc filmed? „)
                          lista.append(film)
                      print(lista)
                      print(” | „.join(lista))
                      print(lista[0])
                      print(lista[1])
                      print(len(lista))
                             

                      10. Csak rövid szavak

                      Kérj be szavakat a felhasználótól egy listába, üres Enterig.

                      A végén:

                      • írasd ki az összes szót
                      • írasd ki csak az első 3 szót
                      • írasd ki az utolsó 2 szót
                      • írasd ki, hány szó került a listába

                      Megoldás
                      lista = []
                      szavak = None

                      while szavak != „”:
                          szavak = input(„Adj meg egy szót!: „)
                          if szavak !=„”:
                              lista.append(szavak)

                      print(lista)
                      print(lista[:3])
                      print(lista[2:])
                      print(len(lista))
                             

                      11. Hónapokból részlista

                      Hozd létre az év 12 hónapját tartalmazó listát.

                      Feladatok:

                      • írasd ki az első félév hónapjait
                      • írasd ki a második félév hónapjait
                      • írasd ki az első 3 hónapot
                      • írasd ki az utolsó 3 hónapot
                      • írasd ki a hónapokat egy sorban, vesszővel elválasztva

                      Megoldás
                      honapok = [„január”, „február”, „március”, „április”, „május”, „június”, „július”, „augusztus”, „szeptember”, „október”, „november”, „december”]

                      print(honapok[:6])
                      print(honapok[6:])
                      print(honapok[:3])
                      print(honapok[3:])
                      print(„, „.join(honapok))
                             

                      12. Saját listaépítő program

                      Készíts programot, amely:

                      • létrehoz egy üres listát
                      • bekér adatokat a felhasználótól
                      • minden megadott adatot eltárol
                      • üres Enterre leáll

                      A program végén írja ki:

                      • a teljes listát
                      • a lista hosszát
                      • az első elemet, ha van ilyen
                      • az utolsó elemet, ha van ilyen

                        Megoldás
                        lista = []
                        adat = None

                        while adat != „”:
                            adat = input(„Add meg az adatot: „)
                            if adat != „”:
                                lista.append(adat)
                        print(lista)
                        print(len(lista))
                        if lista != > 0:
                            print(lista[0])
                            print(lista[1])
                               

                        13. Vegyes listafigyelés

                        Hozz létre egy ilyen listát:

                        • egy szöveg
                        • egy szám
                        • egy logikai érték

                        Utána:

                        • írasd ki az egész listát
                        • írasd ki külön az első, második és harmadik elemet

                        ➡️ Figyeld meg, hogy a Python ezt simán engedi, még ha nem is mindig ez a legszebb megoldás.

                        Megoldás
                        lista = [„alma”, 2, True]

                        print(lista)
                        print(lista[0])
                        print(lista[1])
                        print(lista[2])
                               
                        Vidám anime lány számítógépnél grafikát készít, Inkscape alapok tanulása

                        Ha a ciklusok működését a hivatalos leírás alapján is szeretnéd megnézni, olvasd el a Python vezérlési szerkezetekről szóló tutorialját.

                        Ha szeretnél továbbhaladni a Python programozással, lépj a következő leckére:

                        Egymásba ágyazott ciklusok

                        Egymásba ágyazott ciklusok

                        Python

                        Egymásba ágyazott ciklusok

                        Az egymásba ágyazott ciklusok akkor kerülnek elő, amikor egy programnak nem egyetlen elemet kell kezelnie, hanem egy egész rendszert, amely sorokból és oszlopokból, ismétlődő mintákból vagy több szinten szerveződő adatokból áll.
                        Ilyenkor már nem elég egy sima ciklus, mert nemcsak azt kell megadni, hogy hányszor ismétlődjön valami, hanem azt is, hogy egy ismétlésen belül mi történjen újra és újra. .

                        Python while ciklus működése illusztráción

                        Ezért használjuk az egymásba ágyazott ciklusok megoldást például táblázatok, játéktáblák, szöveges alakzatok, képrácsok vagy akár adatpárok összehasonlításának feldolgozására.

                        Pythonban az egymásba ágyazott ciklusok különösen hasznosak, amikor kétdimenziós gondolkodásra van szükség. Ha például egy sakktáblát, egy szorzótáblát, egy pixelekből álló mintát vagy több sorból felépülő alakzatot szeretnénk kirajzolni, akkor a programnak egyszerre kell figyelnie a sorokra és az oszlopokra. Ugyanez igaz akkor is, amikor listák elemeit hasonlítjuk össze egymással, vagy egy nagyobb adathalmaz minden elemét minden másik elemmel összevetjük. Az egymásba ágyazott ciklusok tehát nemcsak iskolai mintarajzolós feladatokhoz kellenek, hanem minden olyan helyzethez, ahol a program egy rácsban, táblázatban vagy többszintű ismétlődésben gondolkodik.

                        Mit jelent az, hogy egymásba ágyazott ciklusok?

                        6Az egymásba ágyazott ciklusok azt jelentik, hogy egy cikluson belül van még egy másik ciklus. Ez akkor kell, amikor nem csak egyetlen sort akarunk kiírni, hanem több sort, és minden sorban több elemet is meg szeretnénk jeleníteni.

                        A legegyszerűbb példa az, amikor egy sorban több azonos jelet írunk ki.

                        Egy sor kirajzolása

                        Ha egyetlen sorban szeretnénk 6 darab X-et megjeleníteni, akkor elég egy ciklus, ami 6-szor lefut.

                        Itt a program egymás mellé írja ki a karaktereket. Az end=” ” azért kell, mert a print() alapból új sort kezdene (a print(„X”) valójában ennek a rövidítése: print(„X”, end=”\n”). Az end azt mondja meg, hogy a print() a kiírás végére mit tegyen. Ha ezt írod: print(„X”, end=” „) akkor azt mondod, hogy a végére egy szóközt tegyen. 

                        Több sor kirajzolása

                        Ha már nem egyetlen sort, hanem egy teljes téglalapot szeretnénk kirajzolni, akkor jönnek a képbe az egymásba ágyazott ciklusok. A külső ciklus kezeli a sorokat, a belső ciklus pedig minden sorban kírja a 6 karaktert:

                        • A külső ciklus eldönti, hogy hány sor legyen.
                        • A belső ciklus minden sorban végigmegy az oszlopokon
                        • A print() üresen új sort kezd

                        Vagyis 6 karakter, soremelés, újra 6 karakter és ez ismétlődik 4 soron keresztül. 

                        Növekvő alakzat rajzolása

                        Az egymásba ágyazott ciklusok nemcsak a téglalapokhoz jók, hanem alakzatokhoz is. Például készíthetünk vele egy lépcsőzetesen növekvő mintát. 

                        Itt minden új sorban eggyel több karakter jelenik meg. Az első sorban 1, a másodikban 2, a harmadikban 3, a negyedikben 4. 

                        Feladatok

                        Ablakkeret

                        Készíts egy programot, amely egymásba ágyazott ciklusok segítségével kirajzol egy 5×5-ös mezőt az oldalt látható minta szerint. 

                        Megoldás
                        sor = 1
                        while sor <= 5:
                            oszlop = 1

                            while oszlop <= 5:
                                if sor == 1 or sor == 5 or oszlop == 1 or oszlop == 5:
                                    print(„x”, end= ” „)
                                else:
                                    print(” „, end= ” „)
                                oszlop += 1
                            print()
                            sor += 1

                        Magyarázat:

                        • sor = 1
                        • while sor <= 5:

                        Ez a külső ciklus, a sorokat kezeli. Ez azt jelenti, hogy a program 5 soron megy végig. Tehát:

                        • 1. sor
                        • 2. sor
                        • 3. sor
                        • 4. sor
                        • 5. sor

                        Minden sor elején újraindítjuk az oszlopokat. 

                        • oszlop = 1

                        Ez nagyon fontos. 5 oszlopunk lesz. A belső ciklus az oszlopokat kezeli:

                        • while oszlop <= 5:

                        ez azt jelenti, hogy az adott soron belül a program végigmegy az 5 helyen. Tehát minden sorban megnézi:

                        • mi legyen az első helyen
                        • mi legyen a második helyen
                        • mi legyen a harmadik helyen
                        • mi legyen a negyedik helyen
                        • mi legyen az ötödik helyen

                        Ez a belső ciklus. 

                        Mikor írunk ki x-et?

                        • if sor == 1 or sor == 5 or oszlop == 1 or oszlop == 5:
                        • print(„x”, end=” „)
                        • else: print(” „, end=” „)

                        Tehát akkor kell x, ha az adott hely a kereten van. A keret pedig ez:

                        • legfelső sor -> sor == 1
                        • legalsó sor -> sor == 5
                        • legelső oszlop -> oszlop == 1
                        • legutolsó oszlop -> oszlop == 5

                        Ha ezek közül bármelyik igaz, akkor kereten vagyunk és kell az x. Ha egyik sem igaz, akkor kell a szóköz. 

                        Miért kell a belső ciklus végén a print()? -> itt váltunk sort. Ez a print üresen csak egy új sort kezd. 

                        Miért kell az oszlop +=1 és a sor +=1? -> belső ciklusban ezzel lépünk a következő oszlopra, külső ciklus végén ezzel lépünk a következő sorra. 

                        Átlós minta

                        Készíts egy programot, amely egymásba ágyazott ciklusok segítségével kirajzol egy 7×7-es mezőben az oldalt látható alakzatot. 

                        Megoldás
                        sor = 1
                        while sor <= 7:

                            oszlop = 1
                            while oszlop <= 7:
                                if sor == oszlop or sor + oszlop == 8:
                                    print(„x”, end= ” „)
                                else:
                                    print(” „, end=” „)
                                oszlop += 1
                            print()
                            sor += 1

                        Magyarázat

                        Az X két átlóból áll. Az egyik átló bal felülről megy jobb alulra, ott mindig igaz, hogy sor == oszlop, azaz x van az (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7)-es helyeken.

                        A másik átló, ami jobb felülről megy bal alulra, ott mindig igaz, hogy sor + oszlop == 8
                        Miért 8?
                        Mert (1, 7), (2, 6), (3, 5), (4, 4) stb. mindig 8. Ezekre a helyekre is x kell.
                        Ha az x-ek megvannak, minden más helyre szóköz kerül. 

                        Gyakorlás

                        1. Téglalap csillagokból

                        Készíts egy programot, amely egymásba ágyazott ciklusok segítségével kirajzol egy 4 sor magas és 6 oszlop széles téglalapot * karakterből.

                        Megoldás
                        sor = 1

                        while sor <= 4:
                            oszlop = 1

                            while oszlop <= 6:
                                if sor == 1 or oszlop == 1 or sor == 4 or oszlop == 6:
                                    print(„*”, end= ” „)
                                else:
                                    print(” „, end= ” „)
                                oszlop += 1
                            print()
                            sor += 1
                               

                        2. Fordított lépcső

                        Készíts egy programot, amely egymásba ágyazott ciklusok segítségével kirajzol egy 4 soros mintát, ahol az első sorban 5 karakter van, a másodikban 4, a harmadikban 3 és így tovább.

                        Megoldás
                        sor = 1
                        darab = 5

                        while sor <= 5:
                            oszlop = 1
                           
                            while oszlop <= darab:
                                print(„X”, end= ” „)
                                oszlop +=1
                               
                            print()
                            sor +=1
                            darab -=1

                        3. Sakktábla minta

                        Készíts egy programot, amely egymásba ágyazott ciklusok segítségével kirajzol egy 6×6-os mezőben felváltva ír ki X és O karaktereket, sakktáblaszerű elrendezésben

                        Megoldás
                        sor = 1

                        while sor <= 6:
                            oszlop = 1

                            while oszlop <= 6:
                                if sor % 2 == oszlop % 2:
                                    print(„x”, end= ” „)
                                else:
                                    print(„O”, end= ” „)
                                oszlop +=1
                            print()
                            sor += 1
                               

                        4. Pluszjel

                        Készíts egy programot, amely egymásba ágyazott ciklusok segítségével egy 5×5-ös mezőben pluszjelet rajzol ki. A középső sor legyen kitöltve, minden más helyen szóköz jelenjen meg. 

                        Megoldás
                        sor = 1

                        while sor <= 5:
                            oszlop = 1

                            while oszlop <=5:
                                if sor == 3 or oszlop == 3:
                                    print(„+”, end=” „)
                                else:
                                    print(” „, end= ” „)
                                oszlop += 1
                            print()
                            sor += 1
                               

                        5. Piramis alap

                        Készíts egy programot, amely egymásba ágyazott ciklusok segítségével egy középre rendezett, 4 soros piramis alapváltozatát rajzolja ki O karakterből. 

                        Megoldás
                        sor = 1

                        while sor <= 4:
                            oszlop = 1

                            while oszlop <= 7:
                                if oszlop >= 5 sor and oszlop <= 3 + sor:
                                    print(„O”, end= ” „)
                                else:
                                    print(” „, end= ” „)
                                oszlop += 1
                            print()
                            sor += 1
                               
                        Vidám anime lány számítógépnél grafikát készít, Inkscape alapok tanulása

                        Ha a ciklusok működését a hivatalos leírás alapján is szeretnéd megnézni, olvasd el a Python vezérlési szerkezetekről szóló tutorialját.

                        Ha szeretnél továbbhaladni a Python programozással, lépj a következő leckére:

                        Python gyakorlás

                        Python gyakorlás

                        Python

                        Python gyakorlás

                        (if-elif-else, véletlenszám-generálás, while ciklus)

                        Az eddigi leckékben már megismerkedtünk a feltételes utasításokkal, a véletlenszám-generálással és a while ciklussal. Mielőtt továbblépnénk, érdemes egy kicsit megállni és átismételni ezeket az alapokat. Az alábbi feladatok segítenek abban, hogy magabiztosabban használd az if, elif, else szerkezetet, felismerd, mikor kell több külön if, és gyakorold a ciklusos gondolkodást is.

                        Python while ciklus működése illusztráción

                        Python gyakorlás kezdőknek: 15 feladat lépésről lépésre

                        1. Jelszóbekérés

                        Kérj be egy jelszót a felhasználótól. Amíg nem írja be, hogy python123, addig kérje be újra. Ha eltalálta, írja ki: Sikeres belépés!

                        Megoldás
                        jelszo = input(„Add meg a jelszót: „)

                        while jelszo != „python123”:
                            jelszo = input(„Add meg a jelszót: „)

                        print(„Sikeres belépés!”)

                        2. Véletlen szám tulajdonságai

                        Generálj egy véletlen számot -10 és 10 között, majd írd ki róla, hogy pozitív-e, páros-e, osztható-e hárommal. 

                        Megoldás
                        import random

                        szam = random.randint(10, 10)
                        print(szam)

                        if szam > 0:
                            print(„A szám pozitív”)

                        if szam % 2 == 0:
                            print(„A szám páros”)

                        if szam % 3 == 0:
                            print(„A szám osztható hárommal”)

                        3. Találd ki, melyik tartományba esik

                        Generálj egy véletlen számot 1 és 100 között, majd írd ki, hogy kicsi, ha 1 és 33 közé esik, közepes, ha 34 és 66 közé esik, nagy, ha 67 és 100 közé esik. 

                        Megoldás
                        import random
                        szam = random.randint(1, 100)
                        print(szam)

                        if 1 <= szam <= 33:
                            print(„kicsi”)

                        elif szam <= 66:
                            print(„közepes”)

                        else:
                            print(„nagy”)

                        4. Számlálás while ciklussal

                        Írj programot, amely while ciklussal kiírja az 1-től 10-ig terjedő számokat. 

                        Megoldás
                        szam = 1

                        while  szam <= 10:
                            print(szam)
                            szam += 1

                        5. Addig kérjen be számokat, amíg nullát nem kap

                        Kérj be számokat a felhasználótól egymás után, és a program addig fusson, amíg a felhasználó 0-t nem ír be. Minden nem nulla számnál írd ki, hogy a szám pozitív, negatív vagy páros-e? 

                        Megoldás
                        szam = int(input(„Adj meg egy számot: „))
                        while szam != 0:
                            if szam > 0:
                                print(„Pozitív”)
                            elif szam < 0:
                                print(„Negatív”)
                           
                            if szam % 2 == 0:
                                print(„Páros”)
                            szam = int(input(„Adj meg egy másik számot: „))

                        6. Jelszóbekérés

                        Kérj be egy jelszót a felhasználótól. Amíg nem írja be, hogy python123, addig kérje be újra. Ha eltalálta, írja ki: Sikeres belépés!

                        Megoldás
                        jelszo = input(„Írja be a helyes jelszót: „)

                        while jelszo != „python123”:
                            jelszo = input(„Írja be a helyes jelszót! „)

                        print(„Sikeres belépés!”)

                        7. Szám kitalálása

                        A gép gondoljon egy számra 1 és 10 között a random segítségével. A felhasználó addig tippeljen, amíg el nem találja. Ha kisebb a tipp, írd ki: Nagyobbra gondoltam.
                        Ha a tipp nagyobb, írd ki: Kisebbre gondoltam. Ha eltalálta, írd ki: Eltaláltad!

                        Megoldás
                        import random
                        szam = random.randint(1,10)


                        tipp = int(input(„Gondoltam egy számra 1-10 között. Tippeld meg!: „))

                        while tipp != szam:
                            if tipp < szam:
                                print(„Nagyobbra gondoltam!”)
                            elif tipp > szam:
                                print(„Kisebbre gondoltam”)
                           
                            tipp = int(input(„Tippelj újra: „))
                        else:
                            print(„Etaláltad!”)

                        8. Menü választással

                        Írd ki ezt a menüt: 
                        1 – Köszönés
                        2 – Vicces üzenet
                        3 – Kilépés. 
                        Kérj be egy választást a felhasználótól. 
                        Ha 1 – akkor írd ki: Szia!
                        Ha 2 – akkor írd ki: A bug nem hiba, hanem meglepetés funkció.
                        Ha 3 . akkor írd ki: Kilépés
                        Minden más esetben: Hibás választás

                        Megoldás
                        print(„1 = Köszönés \n, „2 = Vicces üzenet \n, „3 – Kilépés \n)

                        szam = int(input(„Írd be, mit szeretnél: „))

                        if szam == 1:
                            print(„Szia!”)
                        elif szam == 2:
                            print(„A bug nem hiba, hanem meglepetés funkció”)
                        elif szam == 3:
                            print(„Kilépés”)
                        else:
                            print(„Hibás választás”)

                        9. Többszöri menü

                        Készíts egy olyan programot, ami újra és újra ezt a menüt jeleníti meg:

                        1 – Dobj egy számot 1 és 6 között
                        2 – Dobj egy számot 1 és 10 között
                        0 – Kilépés

                        A program addig fusson, amíg a felhasználó 0-t nem választ. 
                        1 esetén írjon ki egy véletlen számot 1 és 6 között
                        2 esetén írjon ki egy véletlen számot 1 és 10 között
                        0 esetén álljon le
                        Rossz választásnál írja ki: Nincs ilyen menüpont

                        Megoldás
                        import random

                        szam = „”
                        while szam !=„0”:
                            print(„1 – Dobj egy számot 1 és 6 között”)
                            print(„2 – Dobj egy számot 1 és 10 között”)
                            print(„0 – Kilépés”)


                            szam = input(„Adj meg egy számot: „)

                            if szam == „1”:
                                dobas = random.randint(1, 6)
                                print(dobas)
                            elif szam == „2”:
                                dobas = random.randint(1, 10)
                                print(dobas)

                            elif szam == „0”:
                                print(„Kilépés”)

                            else:
                                print(„Nincs ilyen menüpont”)

                        10. Gondoltam egy számra….

                        A gép gondoljon egy számra 1 és 10 között. A játékosnak összesen 3 próbája legyen kitalálni. Minden rossz tipp után írd ki, hogy nagyobbra vagy kisebbre gondoltam. Ha elfogy a 3 próba, írd ki a helyes számot.

                        Megoldás
                        import random

                         

                        szam = random.randint(1, 5)
                        darab = 1
                        tipp = int(input(„Gondoltam egy számra 1 és 5 között. Találd ki! Mi a tipped? „))

                         

                        while szam != tipp and darab < 3:
                            if szam > tipp:
                                print(„Nagyobbra gondoltam: „)
                               
                            elif szam < tipp:
                                print(„Kisebbre gondoltam: „)

                         

                            tipp = int(input(„Tippeld meg újra: „))
                            darab += 1
                        if szam == tipp:
                            print(„Eltaláltad!”)
                        else:
                            print(„Nem találtad el. A helyes szám: „, szam)
                           

                        11. Páros vagy páratlan játék

                        A gép sorsoljon egy számot 1 és 10 között. A felhasználó tippelje meg, hogy a szám páros vagy páratlan. Ha eltalálta, írd ki: Eltaláltad. Ha nem, írd ki: Nem találtad el. A végén írja ki a gép a helyes számot is.

                        Megoldás
                        import random

                         

                        szam = random.randint(1, 10)
                        if szam % 2 == 0:
                            tipus = „páros”
                        else:
                            tipus = „páratlan”

                         

                        tipp = input(„Gondoltam egy számra. Tippeld meg, hogy páros vagy páratlan? „)
                        if tipp == tipus:
                                print(„Eltaláltad, a szám: „, szam)
                                 
                        else:

                                print(„Nem találtad el, a szám: „, szam)

                        vagy

                        import random

                        szam = random.randint(1, 10)
                        tipp = input(„Golndoltam egy számra. Tippeld meg, hogy páros vagy páratlan: „)

                        if szam % 2 == 0 and tipp == „páros”:
                            print(„Eltaláltad! A szám: „, szam)
                        elif szam % 2 != 0 and tipp == („páratlan”):
                            print(„Eltaláltad! A szám: „, szam)
                        else:
                            print(„Nem találtad el, a szám: „, szam)

                        12. Három dobás

                        A program dobjon egy számot 1 és 6 között háromszor. Minden dobás után:
                        Ha 6-os, írd ki: Max dobás!
                        Ha 1-es, írd ki: Pech!
                        Egyébként írd ki a dobott számot. 

                        Megoldás
                        import random

                        darab = 0

                        while darab < 3:
                            dobas = random.randint(1, 6)
                            if dobas == 6:
                                print(„Max dobás!”)
                            elif dobas == 1:
                                print („Pech”)
                            else:
                                print(dobas)
                            darab += 1

                        13. Titkos szám, kilépési lehetőséggel

                        A gép gondoljon egy számra 1 és 5 között. A felhasználó addig tippeljen, amíg el nem találja vagy be nem írja azt, hogy 0. 
                        Szabályok: 
                        ha 0, akkor írd ki: Kilépés
                        ha kisebb a tipp, írd ki: Nagyobbra gondoltam
                        ha nagyobb a tipp, írd ki: Kisebbre gondoltam
                        ha eltalálta, írd ki: Ügyes!

                        Megoldás
                        import random
                        szam = random.randint(1, 5)
                        tipp = int(input(„Tippeld meg, melyik számra gondoltam, 1-5 között: „))

                        while szam != tipp and tipp !=0:

                            if szam < tipp:
                                print(„Kisebbre gondoltam”)
                               
                            elif szam > tipp:
                                print(„Nagyobbra gondoltam”)
                            tipp = int(input(„Tippeld meg, melyik számra gondoltam, 1-5 között: „))
                           
                        if tipp == szam:
                            print(„Ügyes vagy!”)

                        elif tipp == 0:
                            print(„Kilépés”)

                        14. Menü véletlen üzenettel

                        Készíts menüt:
                        1 = Pozitív üzenet
                        2 = Vicces üzenet
                        3 = Véletlen szám 1 és 10 között
                        0 = Kilépés
                        A program addig fusson, amíg a felhasználó 0-t nem választ. 

                        Megoldás
                        import random

                        print(„1 – Pozitív üzenet”)
                        print(„2 – Vicces üzenet”)
                        print(„3 – véletlen szám 1 és 10 között”)
                        print(„0 – Kilépés”)

                        valasztas = int(input(„Válassz egy számot!: „))

                        while valasztas != 0:
                            if valasztas == 1:
                                print(„Jól haladsz!”)
                            elif valasztas == 2:
                                print(„Nyugi, a számítógép nálad is jobban össze van zavarodva”)
                            elif valasztas == 3:
                                szam = random.randint(1, 10)
                                print(szam)
                            else:
                                print(„Nincs ilyen menüpont”)
                            valasztas = int(input(„Válassz egy másik számot: „))


                        print(„Kilépés”)

                        15. Két próbás tippelés

                        A gép gondoljon egy számra 1 és 3 között. A felhasználónak 2 próbálkozása legyen. 
                        Ha elsőre eltalálja: Elsőre sikerült!
                        Ha másodikra találja el: Másodikra sikerült!
                        Ha nem találja el: Nem sikerült. A szám: ….

                        Megoldás
                        import random
                        szam = random.randint(1, 3)
                        tipp_darab = 1

                        tipp = int(input(„Gondoltam egy számra 1 és 3 között. Tippeld meg: „))

                        while szam != tipp and tipp_darab < 2:
                            tipp_darab +=1
                            tipp = int(input(„Nem talált. Tippelj újra!: „))
                           
                        if szam == tipp and tipp_darab == 1:
                            print(„Elsőre eltaláltad!”)

                        elif szam == tipp and tipp_darab == 2:
                            print(„Másodszorra eltaláltad”)
                        else:
                            print(„Nem sikerült. A szám:”, szam)

                        Ez a Python gyakorlás lecke akkor a leghasznosabb, ha nemcsak elolvasod a feladatokat, hanem önállóan meg is próbálod megoldani őket. 

                        Ha szeretnél további példákat is nézni, érdemes átolvasni a Python hivatalos dokumentációját.

                        Vidám anime lány számítógépnél grafikát készít, Inkscape alapok tanulása

                        Ha szeretnél továbbhaladni a Python programozással, lépj a következő leckére:

                        While ciklus Pythonban

                        While ciklus Pythonban

                        Python

                        While ciklus Pythonban

                        A programozásban gyakran előfordul , hogy egy utasítást vagy több sorból álló blokkot többször szeretnénk végrehajtani. Ezt leírhatnánk újra és újra, de ennél van egy sokkal jobb megoldás: a ciklus. A while ciklus akkor hasznos, ha azt szeretnénk, hogy egy művelet addig ismétlődjön, amíg egy feltétel igaz. A Pyhtonban a while ciklus addig fut, amíg a megadott feltétel igaz. 

                        Python while ciklus működése illusztráción

                        Mi az a while ciklus?

                        A while szó jelentése: amíg. A while ciklus tehát azt mondja a programnak: amíg egy feltétel igaz, addig hajtsd végre ezt a blokkot. 
                        Általános alakja: 

                        while feltétel:
                             utasítás

                        Nagyon fontos, hogy a while után egy feltétel álljon, a sor végén pedig kettőspont legyen. Az alatta levő behúzott sorok tartoznak a ciklus törzséhez. 

                        Lássuk ezt egy konkrét példával. Írjunk ki minden egész számot 1-től 10-ig:

                         

                        Python random randint példa véletlenszám generálásához

                        Mi történik itt? 

                        • A szam = 1 sorban létrehozunk egy változót, amely 1-ről indul
                        • A while szam <= 10: azt jelenti, hogy amíg a szám kisebb vagy egyenlő 10-zel, fusson a ciklus
                        • a print(szam) kiírja az aktuális értéket
                        • a szam = szam + 1 megnöveli a változó értékét eggyel, hogy a következő körben már a következő szám jöjjön. Ha ezt a növelést kihagynánk, a feltétel mindig igaz maradna, és a ciklus soha nem érne véget. Ezt végtelen ciklusnak nevezzük. 
                          A szam = szam + 1 leírható rövidebb módon is: szam += 1. A Python dokumentációja az ilyen += alakot kiegészített értékadásként írja le, például a += 2, a szokásos esetben a hosszabb a = a + 2 rövidebb formája. Ez így rövidebb, tisztább, gyakran használjuk

                        Szöveg kiírása többször

                        Most legyen egy másik változónk, és írjuk ki ötször, hogy „Legyen szép napod!”

                        Ebben a példában a változó számolja, hogy hányszor futott le a ciklus. Amíg a számláló kisebb vagy egyenlő öttel, a program kiírja a szöveget. 
                        Minden kör végén eggyel növeljük a számlálót. 

                        Mire kell odafigyelni a while ciklusnál?

                        1. Legyen jól megadva a feltétel. A ciklus addig fut, amíg a feltétel igaz. Ha rossz feltételt írunk, a program nem úgy fog működni, ahogy szeretnénk. 

                        2. Változzon valami a ciklusban. Ha a feltételben szereplő változó értéke nem változik, akkor könnyen végtelen ciklus lesz belőle. 

                        Döntsön a felhasználó a ciklus ismétléséről

                        A while ciklus nem csak számlálásra jó. Olyan helyzetekre is használhatjuk, amikor a program addig kérdez és ismétel valamit, amíg a felhasználó azt nem mondja, hogy elég. 

                        A folytatja változó kezdetben True, vagyis igaz. Amíg ez tart, a ciklus fut. A program minden körben megkérdezi a felhasználót, hogy igaz-e még a feltétel. Ha a válasz értéke „n”, akkor a folytatja értéke False lesz. Ekkor a while feltétele már nem igaz, tehát a ciklus leáll. 

                        Adatbekérés while ciklussal

                        A while ciklus egyik legfontosabb felhasználása az ellenőrzött adatbekérés. Például kérjünk be a felhasználótól egy egész számot 0 és 5 között. Ha rossz értéket ad meg, kérjük be újra. 

                        A 0 <= szam <= 5 azt vizsgálja, hogy a szám beleesik-e a megadott intervallumba. A not miatt a ciklus akkor fut, ha nem igaz, hogy a szám 0 és 5 között van. 

                        Vagyis:

                        • ha jó számot ad meg a felhasználó, a ciklus nem fut le
                        • ha rossz számot ad meg, a ciklus újra bekéri az adatot. 

                        Kilépés ENTER lenyomásával

                        Csinálhatunk olyat is, hogy a program szavakat kér be, és addig ismétli a bekérést, amíg a felhasználó csak egy ENTER-t nem nyom. 
                        Az ENTER – üres szövegrész – lesz a kilépési jel.  

                        Miért hasznos a while ciklus?

                        A while különösen jó választás, ha nem tudjuk előre, pontosan hányszor kell ismételni valamit. Például:

                        • addig kérünk be adatot, amíg jó nem lesz
                        • addig ismétlünk egy kérdést, amíg a felhasználó ki nem lép
                        • addig növelünk egy számlálót, amíg el nem ér egy határt. 

                        Ez különbözteti meg a while ciklust attól a helyzettől, amikor előre tudjuk az ismétlések számát. 

                        Összefoglalás

                        A while ciklus segítségével a Pythonban addig ismételhetünk egy utasítést, vagy utasításblokkot, amíg egy feltétel igaz. Nagyon hasznos számlálásra, adatellenőrzésre és olyan helyzetekre, amikor nem tudjuk előre, hányszor kell megismételni valamit. 
                        A while ciklus használatánál figyelni kell arra, hogy a feltétel egyszer majd hamissá váljon, különben végtelen ciklus keletkezik. 

                        Feladatok

                        1. Visszaszámlálás

                        Írj programot, amely 10-től 1-ig kiírja a számokat while ciklussal, majd a végén kiírja, hogy Kilövés!

                        Megoldás
                        visszaszamlalas = 10
                        while visszaszamlalas > 0:
                            print(visszaszamlalas)
                            visszaszamlalas -=1
                        print(„Kilövés!”)

                        2. Páros számok kiírása

                        Írj egy olyan programot, amely kiírja az első 10 páros számot while ciklussal

                        Megoldás
                        paros_szam = 2
                        while paros_szam <= 20:
                            print(paros_szam)
                            paros_szam += 2

                        print(„Vége”)

                        vagy

                        paros_szam = 2
                        darab = 0

                        while darab < 10:
                            print(paros_szam)
                            paros_szam += 2
                            darab += 1

                        3. Összegzés addig, amíg 0 nem jön ki

                        Írj programot, amely számokat kér be a felhasználótól, és addig folytatja a bekérést, amíg a felhasználó 0-t nem ír be. A végén írja ki a beírt számok összegét.

                        Megoldás
                        szam = int(input(„Adj meg egy számot: „))
                        osszeg = 0

                        while szam != 0:
                           osszeg = osszeg + szam
                           szam = int(input(„Adj meg egy számot: „))

                        print(„A számok összege: „, osszeg)

                        4. Adatbekérés ellenőrzéssel

                        Írj programot, amely addig kér be egy egész számot, amíg a felhasználó 0 és 5 közötti számot nem ad meg. Ha rossz értéket ad meg, kérje be újra. Ha jó értéket ad meg, írja ki: Köszönöm!

                        Megoldás
                        szam = int(input(„Adj meg egy számot 0 és 5 között: „))

                        while not 0 <= szam <= 5:
                            szam = int(input(„A megadott szám helytelen. Adj meg egy számot 0 és 5 között: „))

                        print(„Köszönöm!”)

                        5. Kilépés Enterrel

                        Írj programot, amely szavakat kér be a felhasználótól. A program addig fusson, amíg a felhasználó be nem nyom egy Entert. A ciklus végén írja ki: Vége

                        Megoldás
                        szo = input(„Adj meg egy szót. Ha kész vagy, lépj ki Enterrel: „)

                        while szo != „”:
                            szo = input(„Adj meg egy szt. Ha kész vagy, lépj ki Enterrel: „)

                        print(„Vége”)

                        6. Számolás 3-tól 15-ig

                        Írj egy programot, amely kiiratja a számokat 3-tól 15-ig

                        Megoldás
                        szam = 3

                        while szam <=15:
                            print(szam)
                            szam += 1
                           
                        print(„Vége”)

                        7. Páratlan számok

                        Írj programot, amely kiiratja az 1 és 15 közötti páratlan számokat while ciklussal

                        Megoldás
                        szam = 1
                        while szam <= 15:
                            print(szam)
                            szam +=2

                        8. Addig kérdezz, amíg páratlan szám nem jön

                        Írj programot, amely addig kér be számokat, amíg a felhasználó pozitív számot nem ad meg. Ha jó számot ír be, jelenjen meg: Rendben, ez már pozitív szám

                        Megoldás
                        szam = int(input(„Adj meg egy pozitív számot: „))

                        while szam <= 0:
                            szam = int(input(„Adj meg egy pozitív számot: „))

                        print(„Rendben, ez már pozitív szám!”)

                        9. A számok átlaga 0-ig

                        Írj programot, amely számokat kér be a felhasználótól. A bekérés addig tartson, amíg a felhasználó 0-t nem ír be. A végén írd ki a beírt számok összegét, hány darab számot adott meg a felhasználó és az átlagot. A 0 csak leállítja, nem számít a számolásba. 

                        Megoldás
                        szam = int(input(„Adj meg egy számot: „))
                        darab = 0
                        osszeg = 0

                        while szam != 0:
                            darab += 1
                            osszeg += szam
                            szam = int(input(„Adj meg egy számot: „))

                        if darab > 0:
                            print(„A beírt számok összege: „, osszeg)
                            print(„A beírt számok száma: „, darab, „darab”)
                            print(„A beírt számok átlaga:”, osszeg / darab)
                        else:
                            print(„Nem adtál meg egyetlen számot sem.”)

                        10. Igen vagy nem?

                        Írj programot, amely addig kér be választ a felhasználótól, amíg az nem írja be, hogy igen vagy nem. A mást ír be, kérdezze újra. Ha jó választ írt be, írja ki: Elfogadom

                        Megoldás
                        valasz = input(„Megtanultad a leckét? (igen/nem): „)

                        while valasz != „igen” and valasz != „nem”:
                            valasz = input(„Hibás válasz. Nem ezt kérdeztem! Megtanultad a leckét? „)

                        print(„Elfogadott válasz.”)
                           
                        Vidám anime lány számítógépnél grafikát készít, Inkscape alapok tanulása

                        Ha szeretnél továbbhaladni a Python programozással, lépj a következő leckére:

                        Véletlenszám generálása Pythonban

                        Véletlenszám generálása Pythonban

                        Python

                        Véletlenszám generálása Pythonban

                        Gyakran szükségünk van véletlenszerűen kiválasztott számokra. Ilyet használhatunk például játékokban, sorsolásoknál, feladatgenerálásnál vagy éppen tesztelésnél. A véletlenszámok előállításához a Python random modulját használjuk, amelyet a program elején importálnunk kell.

                        python bevezetés – anime lány laptopnál tanul programozni, barátságos python kígyóval

                        Random modul

                        A Pythonban a véletlenszámok generálása nagyon egyszerű. Ehhez a random modult használjuk. Ez a modul a Python része, csak be kell importálni a programunkba. Az importálás után már elérjük a modulhoz tartozó műveleteket.

                        Például így tudunk véletlen egész számot generálni:

                        Python random randint példa véletlenszám generálásához

                        Ebben a példában a program egy véletlen egész számot generál 1 és 12 között, majd eltárolja azt a veletlen_szam nevű változóban.

                        Nézzük meg részenként:

                        • random – a modul neve
                        • randint – egy olyan függvény, amely véletlen egész számot ad vissza
                        • (1, 12) – az intervallum, amelyből a számot választja

                        Fontos, hogy a randint() zárt intervallummal dolgozik, vagyis a kezdőérték és a végérték is beleértendő. Ez azt jelenti, hogy ebben a példában a program generálhat 1-et, 12-t, és a kettő közötti bármelyik egész számot is.

                        A randint() csak egész számot ad vissza. Ha nem egész számra lenne szükség, akkor más függvényt kell majd használni.

                        Mire használható a véletlenszám generálása Pythonban?

                        A véletlenszám generálása Pythonban sokféle programban hasznos lehet. Készíthetünk vele egyszerű játékokat, dobókocka-szimulációt, sorsolást vagy akár gyakorlófeladatokat is.
                        A kezdők számára azért is fontos ez a téma, mert a random modul használata közben egyszerre gyakorolhatjuk a változókat, a kiírást és az elágazásokat is.
                        A véletlenszám generálása Pythonban tehát nemcsak önmagában érdekes, hanem jó alapot ad a későbbi összetettebb programokhoz is. Ha ezt a részt biztosan megérted, később könnyebben fog menni a ciklusokkal, listákkal és játékos feladatokkal való munka is.

                        Összefoglalás

                        A véletlenszám generálása Pythonban a random modul segítségével történik. Egyik leggyakrabban használt függvény a randint(), amely két megadott határ között ad vissza egy véletlen egész számot. Fontos, hogy ez a függvény zárt intervallummal dolgozik, vagyis a kezdőértéket és a végértéket is beleszámolja. 

                        Gyakori hibák

                        • Elmarad az import random, ezért a program nem ismeri fel a random modult.
                        • A generált számot nem tároljuk változóba, vagy nem írjuk ki, ezért nem látjuk az eredményt.

                        Feladatok

                        1. Dobókocka

                        Készíts programot, amely kiír egy véletlen számot 1 és 6 között.
                        A kiírás ilyen legyen:

                        Megoldás
                        import random
                        szam = random.randint(1, 6)

                        print(„A dobott szám:”, szam)

                        2. Véletlen hónap

                        Generálj egy véletlen számot 1 és 12 között, majd írd ki, hogy ez egy hónap sorszáma.

                        Példa:

                        Megoldás
                        import random
                        honap = random.randint(1, 12)

                        print(„A kiválasztott hónap sorszáma:”, honap)

                        3. Véletlen páros szám

                        Generálj egy véletlen számot 1 és 20 között.
                        Ezután vizsgáld meg, hogy páros-e, és írd ki az eredményt.

                        Megoldás
                        import random
                        veletlen_szam = random.randint(1, 20)
                        print(veletlen_szam)

                        if veletlen_szam % 2 == 0:
                            print(„Páros szám”)
                        else:
                            print(„Páratlan szám”)

                        4. Kockadobás értékelése

                        Készíts programot, amely dob egyet 1 és 6 között, majd a dobás alapján szöveget ír ki:

                        • ha 6, akkor: Hatos!
                        • ha 1, akkor: Pech!
                        • minden más esetben: Átlagos dobás.

                        Megoldás
                        import random
                        kocka_dobas = random.randint(1, 6)
                        print(kocka_dobas)

                        if kocka_dobas == 6:
                            print(„Hatos!”)

                        elif kocka_dobas == 1:
                            print(„Pech!”)

                        else:
                            print(„Átlagos dobás.”)

                        5. Véletlen szám és összehasonlítás

                        Generálj egy véletlen számot 1 és 100 között.
                        Ezután írd ki, hogy:

                        • kisebb mint 50,
                        • nagyobb mint 50,
                        • vagy pontosan 50.

                        Megoldás
                        import random
                        veletlen_szam = random.randint(1, 100)
                        print(veletlen_szam)

                        if veletlen_szam < 50:
                            print(„Kisebb mint 50”)

                        elif veletlen_szam > 50:
                            print(„Nagyobb mint 50”)
                        else:
                            print(„Pontosan 50.”)

                         

                        Ha részletesebben szeretnél olvasni a Python random moduljáról, nézd meg a hivatalos dokumentációt.

                         

                        Vidám anime lány számítógépnél grafikát készít, Inkscape alapok tanulása

                        Ha szeretnél továbbhaladni a Python programozással, lépj a következő leckére: