A legkirályabb sorozat

Ööö. Nem, ez nem filmsorozat. Hanem egy objektum. Na, majd mindjárt elmondom…

Az előző alkalommal láttuk munkában a bejárós ciklust. Ugyebár attól volt bejárós, hogy bejárta, végigjárta egy gyűjteményes adattípusba – nálunk konkrétan a lista típusba – tartozó objektum elemeit. Azonban nem csak listákat lehet bejárni, hanem számsorozatokat is. Számsorozatokat pedig a range() függvénnyel hozhatunk létre. Na lássuk ezt élőben:

A range típusú objektumok

A range típusú objektumok a range() függvénnyel hozhatók létre. Ez a második összetett, vagy ha tetszik gyűjteményes, azaz több értéket tároló adattípus, amivel megismerkedünk – az első a lista volt. A range típusú objektum számsorozatot tárol, aminek a mi szempontunkból legfontosabb tulajdonsága, hogy bejárható, azaz bejárós ciklusban használható.

A range() függvény három formában hívható:

  1. Csak a végét adjuk meg a számsorozatnak: range(100). A megadott szám már nem lesz benne a sorozatban. Ha csak a végét adjuk meg a számsorozatnak, akkor automatikusan 0-tól indul, és nem adhatunk meg lépésközt.
  2. A sorozatnak megadjuk az elejét és a végét: range(10, 20). A megadott vég most sem lesz benne a sorozatban de a kezdet igen, azaz ez a konkrét range-parancs a 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 számsorozatot adja vissza.
  3. Ha a sorozatnak megadtuk az elejét, akkor a lépésköz is megadható. A range(10, 20, 3) a 10, 13, 16, 19 sorozatot adja vissza.

A számsorozatok bejárása

A range típusú objektum olyannyira bejáható objektum, hogy a list() függvénnyel listává alakítható, és így akár ki is írható a tartalma: print(list(range(10))). Viszont akkor már akár be is járhatjuk:


for sapka in range(10):
    print(sapka)

A sapka nevű változóba (a hülye névvel csak újra tudatosítani akarom, hogy a számítógép számára nincs jelentősége a névnek) a ciklus egyes ismétlődéseikor a 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 számsorozat tagjai kerülnek.

A számlálós ciklus

A Pythonban összesen kétféle ciklus van: elöl tesztelő (azaz while-), és bejárós (azaz for-) ciklus. Számlálós ciklus nincs. De szimulálható, és épp most szimuláltuk. A számlálós ciklussal, mint névvel a Pythonban programozónak is tisztában kell lennie, ugyanis a számlálós ciklus nagyon elterjedt, olyannyira, hogy talán a legrégebbi ciklustípusról van szó, és van ilyen ciklus az e sorok írója által ismert további programozási nyelvekben is. Na jó, majdnem mindben van 🙂 Bármilyen nem-Python szövegkörnyezetben olvasol a for-ciklusról, akkor számlálós ciklust értenek rajta. Na de mi a pék az a számlálós ciklus?

Szövegszerű leírással (pszeudokóddal) ilyen:


ciklus i:= 1-től 100-ig:
    ki(i)
ciklus vége

Az i ebben az esetben a ciklusváltozó névre hallgat. Na jó, nem hallgat, de úgy hívjuk. A ciklus meg 1-től kiírja a számokat 100-ig. Lássuk ezt a ciklust pár nyelven:

Visual Basic Script-ben


For i = 0 To 100
    WScript.Echo i
Next

C#-ban:


for (int i = 1; i <= 100; i++)
    {
        Console.WriteLine(i);
    }

Pascal-ban:


For i := 1 to 100 do
    Begin
        WriteLn(i)
    End;

De Pythonban ilyet nem tudunk. Helyette “szimulálunk” számlálós ciklust. Előállítjuk a bejárandó számokat és bejárjuk őket:


for i in range(1, 101):
    print(i)

Vedd észre, hogy a range után 101-et írtunk, nem 100-at! Ugye tudod, miért? És ha arra gondolsz, hogy miért van ez ilyen hülyén, hát látni fogod majd, hogy megvan ennek a maga értelme:)

Feladatok

F0015a: Írd ki a számokat 0-tól 10-ig! (Megoldás az expand source-ra kattintva)


for szám in range(11):
    print(szám)

F0015b: Írd ki a páratlan számokat 50-től 100-ig! (Megoldás az expand source-ra kattintva)

for szám in range(51, 100, 2):
    print(szám)

F0015c: Írd ki az öttel osztható számokat 200-tól 100-ig! (Megoldás az expand source-ra kattintva)

for szám in range(200, 99, -5):
    print(szám)

 

A múltkor megismerkedtünk a bejárós ciklussal. Legközelebb végleg rendet teszünk a ciklusok körében.

Reklámok

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés / Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés / Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés / Módosítás )

Google+ kép

Hozzászólhat a Google+ felhasználói fiók használatával. Kilépés / Módosítás )

Kapcsolódás: %s