Kihagyás

A Python vezérlési szerkezetei

Szelekciós vezérlés

Pythonban a szelekciós vezérlés megvalósítására az if, else és elif utasítások használatosak. Az elif a C-ből és Javából ismerős else if Pythonos megfelelője. A másik két utasítás ugyanazt a célt szolgálja, mint C-ben vagy Javában.

Használatuk szintaxisa (a szögletes zárójelek közötti részek elhagyhatók):

1
2
3
4
5
6
if feltetel:
    csinalunk_valamit()
[elif feltetel:
    csinalunk_valami_mast()]
[else:
    csinalunk_valami_teljesen_mast()]

Amint láthatjuk, a szelekciós vezérlési ágaknál is használjuk az imént megismert blokkszintaxist: egy adott vezérlési ághoz tartozó utasítássorozatot beljebb igazítunk.

A feltételek megadásakor használható fontosabb feltételes és logikai operátorok:

Operátor Működése
a == b Igaz, ha a és b értéke megegyezik
a != b Igaz, ha a és b értéke nem egyezik meg
a < b Igaz, ha a kisebb, mint b
a <= b Igaz, ha a kisebb vagy egyenlő, mint b
a > b Igaz, ha a nagyobb, mint b
a >= b Igaz, ha a nagyobb vagy egyenlő, mint b
a and b Igaz, ha a és b értéke egyaránt igaz (logikai ÉS)
a or b Igaz, ha legalább az egyik operandus értéke igaz (logikai VAGY)
not a Igaz, ha a értéke hamis (logikai tagadás)

Példa: Egy program, amely beolvas egy egész számot a standard inputról és kiírja, hogy az pozitív, nulla vagy negatív

1
2
3
4
5
6
7
8
9
szam = int(input("Adj meg egy számot: "))

if szam < 0:                        # "ha" ág
    print("A beírt szám negatív.")
    print("Abszolútértéke: " + str(abs(szam)) + ".")
elif szam == 0:                     # "egyébként ha" ág
    print("A beírt szám nulla.")
else:                               # "egyébként" ág
    print("A beírt szám pozitív.")

Példa: Logikai operátorok használata

1
2
3
4
gondolt_szam = 100

if not gondolt_szam == 42:                      # logikai "NEM"
    print("A gondolt szám nem 42.")
1
2
3
4
5
eletkor = int(input("Hány éves vagy? "))
nem = input("Mi a nemed? (férfi/nő/egyéb) ")

if eletkor >= 18 and nem == "férfi":            # logikai "ÉS"
    print("Nagykorú férfi vagy.")
1
2
3
4
homerseklet = float(input("Hány fok van odakint? "))

if homerseklet < -20 or homerseklet > 50:       # logikai "VAGY"
    print("Srácok, baj van...")

Ismétléses vezérlés (Ciklusok)

Pythonban a while és for utasításokat tudjuk használni ismétléses vezérlés megvalósításra. (Pythonban nincs beépített do... while szerkezet.)

A while utasítás

A while utasítás a klasszikus kezdőfeltételes ismétléses vezérlést valósítja meg. Szintaxisa:

1
2
while feltetel:
    csinalunk_valamit()

A már jól megszokott módon, a ciklusmag addig fut, amíg a vizsgált feltétel igaz.

Példa: Írassuk ki az egész számokat 1-től 10-ig, while utasítás segítségével!

1
2
3
4
5
i = 1

while i <= 10:
    print(i)
    i += 1   # emlékeztető: Pythonban nincs i++

A C-ben tanult break, illetve continue utasítások Pythonban is használhatók.

  • break: megszakítja az aktuális ismétlést és a szerkezetet követő utasításra ugrik
  • continue: megszakítja az aktuális ismétlést és a következő iterációra ugrik

Példa: A break és continue utasítások használata while ciklusban:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
count = 0

while True:         # végtelen ciklust indít
    count += 1

    if count > 5:   # megállási feltétel
        break

    if count == 3:  # a 3-as értéket átugorjuk
        continue

    print(count, "Éljen a Python!")

Kimenet

1 Éljen a Python! 2 Éljen a Python! 4 Éljen a Python! 5 Éljen a Python!

A for utasítás

Pythonban a for ciklus a korábban tanultakkal ellentétben nem a klasszikus számlálásos ismétléses vezérlést valósítja meg. Pythonban ugyanis úgynevezett listaszerű for ciklus van, ami egy elemsorozat bejárására szolgál. Ekkor a ciklusváltozó rendre felveszi a bejárni kívánt elemsorozat összes értékét.

Nézzünk néhány példát a for utasítás használatára!

Szövegek bejárása

1
2
for betu in "alma":
    print(betu)

Kimenet

a l m a

A fenti példában a bejárni kívánt elemsorozatunk egy szöveg ("alma"). A szöveg karakterekből áll, ezeken a karaktereken iterálunk végig. A betu névre hallgató ciklusváltozónk minden iterációban felveszi az aktuális karakter értékét, amit kiírunk a konzolra.

Listák bejárása

A for ciklus egy másik gyakori használata a listák bejárása. A listákról egy későbbi gyakorlaton tanulunk részletesebben, de tulajdonképpen tekinthetünk rájuk úgy, mint a tömbökre - ők is elemek sorozatát tárolják.

A lista elemeinek bejárása hasonlóképpen történik, mint a szövegek karaktereinek bejárása.

1
2
for szam in [12, 23, 34, 45]:
    print(szam)

Kimenet

12 23 34 45

Hagyományos for ciklus szimulálása

Felmerülhet bennünk a kérdés, hogy van-e lehetőségünk Pythonban a for ciklust a "hagyományos" módon, számlálásos ismétléses vezérlésre használnunk. A válasz igen.

Ahhoz, hogy a klasszikus módon tudjuk használni a for ciklust, először egy számokból álló elemsorozatot kell generálnunk, aminek az elemein végig fogunk iterálni.

A range(start, end, step) függvénnyel egyszerűen generálható ilyen számokból álló elemsorozat. Ez a függvény legyártja nekünk az egész számokat start-tól end-ig (az end már nincs benne az elemsorozatban), step lépésközzel.

A start, illetve step paraméterek elhagyhatók. Alapértelmezett módon 0-tól indulunk (start alapértéke), és 1-esével lépkedünk (step alapértéke).

A step értékeként negatív számot is megadhatunk, ekkor "visszafelé lépkedünk".

Példa: Az egész számok kiíratása 0-tól 10-ig (a 10 már nincs benne)

1
2
for i in range(10):             # 0 1 2 ... 7 8 9
    print(i)

Példa: Az egész számok kiíratása 2-től 10-ig (a 10 már nincs benne)

1
2
for i in range(2, 10):          # 2 3 4 ... 7 8 9
    print(i)

Példa: Az egész számok kiíratása 1-től 100-ig, 3-as lépésközzel (a 100 már nincs benne)

1
2
for i in range(1, 100, 3):      # 1 4 7 ... 94 97
    print(i)

Példa: Az egész számok kiíratása 20-tól 10-ig ("visszafelé lépkedés", a 10 már nincs benne)

1
2
for i in range(20, 10, -1):     # 20 19 18 ... 12 11
    print(i)

break, continue

Természetesen a for ciklusban is használhatjuk a break és continue utasításokat.

Példa: Elkezdjük kiíratni az 1 és 100 közötti egész számokat, majd 42-nél kilépünk

1
2
3
4
5
6
for i in range(1, 100):
    print(i)

    if i == 42:
        print("Megtaláltuk az élet értelmét!")
        break

Példa: Kiíratjuk egy pizzafeltéteket tároló lista elemeit, viszont ha ananászt látunk, azt átugorjuk (ízlés kérdése... a jegyzet készítője nem szereti az ananászos pizzát)

1
2
3
4
5
6
print("A legjobb pizzafeltétek:")

for feltet in ["sajt", "bacon", "ananász", "pepperoni"]:
    if feltet == "ananász":
        continue
    print(feltet)

Utolsó frissítés: 2021-09-13 14:05:13