Python kezdőknek kurzus 2. lecke

A Ubuwiki wikiből

Mai leckénk a for ciklusról és a változókról szól.

Egyszerű ciklus

A ciklus egy egyszerű fogalom: valami, amit újra és újra végrehajtatunk.

A ciklusoknak sok fajtája van. Nézzük elsőnek a számláló ciklust, amit akkor használunk, ha a valamit megadott számú alkalommal szeretnénk futtatni

Tegyük fel, hogy szeretnénk kiírni a "Hello világ!"-ot egy helyett ötször. Pythonban ennek a legegyszerűbb módja:


Python 2.x Python 3.x
for i in range(1, 6) :
    print "Hello világ!"
for i in range(1,6):
   print("Hello világ!") 

Először is, mi az i?

Az i egy változó, ahogy az előző leckében a 'name' is az volt, azzal a különbséggel, hogy ebben az esetben az i egy egész számot tárol. Először ez a szám 1, majd 2, majd 3, majd 4 és 5 … ekkor megáll, mielőtt a 6-ig elérkezne, mert az első sorban megszabott intervallum az (1,6).

Általában a számláló ciklusban i-nek szokás a változót választani, de ez nem kötelező. Ugyanúgy működne a fenti ciklus, ha így írnánk:

for hippopotamus in range(1, 6) :

Megjegyzés: figyeljünk a print sorának behúzására. A példákban a behúzás négy szóköz, de lehet kettő, három vagy akármennyi. Az a fontos, hogy legyünk következetesek. Python nyelven számít a behúzás, vagyis ha elfelejtjük kitenni a megfelelő számú szóközt az adott szinten, akkor a programunk nem fog helyesen működni.

Ez elsőre feleslegesnek tűnhet, pedig valójában egy jó dolog. Azokban a nyelvekben, ahol nem számít a behúzás, könnyen írhatunk olyan kódot, ami jónak tűnik, de a behúzás hiánya miatt nem vesszük észre benne a hibá(ka)t. Emellett a nem megfelelően formázott kódot nagyon nehéz elolvasni, értelmezni.

A sor végén szereplő kettőspont szintén fontos, ez mondja meg a Pythonnak, hogy egy többsoros utasításunk van. A for ciklusnak nincs értelme, ha nincsenek utasításaink a cikluson belül; a kettőspont jelzi, hogy az utána következő behúzott sorok a cikluson belül kerülnek végrehajtásra.

Nem szükséges szóközt tennünk a kettőspont elé. A Python programozók egy része tesz elé, másik része nem. Ez csak a programozó döntésén múlik.

Minden alkalommal, amikor az i új értéket kap, még egyszer kiíródik, hogy "Hello világ".

Nézzük most mit is takar range()

A range(1, 6) számok egy listáját adja, ami 1-el kezdődik és a 5-el ér véget: [1, 2, 3, 4, 5].

Tehát fenti ciklus az alábbit jelenti:

For minden számra a list [1, 2, 3, 4, 5] listából:


Python 2.x Python 3.x
print "Hello, world!"
print("Helló világ!")


Ha követni szeretnénk mi az i értéke, kiírathatjuk azt is:


Python 2.x Python 3.x
for i in range(1, 6) :
    print "Hello, world! i =", i
for i in range(1, 6) :
    print("Hello, world! i =", i)

Python parancssor és további példák a range()-re

Ha még nem világos mi is a range, használjuk közvetlenül Pythonban. Futtasuk a python parancsot fájlnév illetve paraméterek nélkül. Ha látjuk a >>> promptot, gépeljük be:


Python 2.x Python 3.x
range(1, 6)
list(range(1,6))

és nézzük mit kapunk.

A Python parancsértelmezője könnyen kezelhető és bármikor ha valamilyen egyszerű parancsot szeretnénk kipróbálni használhatjuk, nem szükséges hogy új fájlt készítsünk a teszteléshez. Ha szeretnénk, akár egy teljes ciklust is begépelhetünk, csak ne feledkezzünk meg a behúzásról!

A range nem csak egyesével tud számlálni. A range(0, 10, 2) például kettesével számol. Próbáljuk ki, gépeljük be a >>> prompt után

Python 2.x Python 3.x
range(0,10, 2)
[2, 4, 6, 8]
list(range(0,10,2))
[2, 4, 6, 8]


Akár visszafele is lépkedhetünk a számokon, például így:

Python 2.x Python 3.x
range(5, 0, -1)
list(range(5,0,-1))

Mi is történik itt? Minden új szám esetén az előző számhoz -1-et hozzáadunk. Ha elértünk a végponthoz a 0-hoz, akkor megállunk. A 0-t nem tartalmazza a sorozat.

if utasítás

Egy maradt még a mai leckéből: az if utasítás.

Python 2.x Python 3.x
for i in range(1, 6) :
   if i == 3 :
       print "Hello, world! i =", i
for i in range(1, 6) :
   if i == 3 :
       print("Hello, world! i =", i)

Az if utasítás meglehetősen egyszerű. Ha az i értéke 3, akkor végrehajtódnak az if után következő parancsok (minden sor, ami beljebb van húzva).

Az egyetlen trükkös rész a dupla egyenlőségjel. Hogy miért dupla? Azért mert az egyszeres egyenlőségjellel a változók értékét állíthatjuk be, ahogy ezt az első leckében szerepelt: name = "Amelia Earhart"

Így ha két értéket (az előző esetben az i-t és a 3-at) szeretnénk összehasonlítani, akkor ==-t kell használnunk, ellenkező esetben szintaktikai hibát jelez a Python. A legtöbb moder nyelvben szerepel a ==, így hasznos megismernünk.

Megadhatunk több feltételt is az "elif" illetve "else" segítségével.

Python 2.x Python 3.x
for i in range(1, 6) :
    if i == 3 :
        print "Az i erteke harom !"
    elif i == 4 :
        print "most negy!"
    else :
        print "Hello vilag! i =", i
for i in range(1, 6) :
    if i == 3 :
        print("Az i erteke harom !")
    elif i == 4 :
        print("most negy!")
    else :
        print("Hello vilag! i =", i)

Házi feladat

1. írjunk egy programot, a „Tíz kicsi néger” című versikéhez kapcsolódva. A program valami ilyesmit írjon ki:

   10 kicsi neger
   9 kicsi neger
   8 kicsi neger

... mígnem elérjük az 1-et.

2. Milyen sorozatot ad a range(0, 10, -1) / list(range(0,10,-1))? Próbáljuk ki és próbáljuk megtalálni a választ, hogy miért ezt kaptuk.
A 3-as házi opcionális – ez kicsit nehezebb a korábbiaknál, de próbálkozzunk azért vele. Ha nem sikerül megoldani, nézzük meg mások mire jutottak vele.

3. Írjunk egy ciklust a range() segítségével, ami kiírja az első 5 számot betűkkel:

  egy
  ketto
  harom
  negy
  ot

További leckék

Személyes eszközök