div style="margin-left: 3cm;">

Feltételes utasítás


A legelső utasítás amit a python programozásban megvizsgálunk az if utasítás.
Az if segítségével feltételeket dolgozunk fel, így szabályozva a programrészek futását.

Nézzük ezt a gyakorlatban:

a = 15
if (a <16):

    print('a kisebb 16-nál')

elsősorban adunk egy értéket a változónak, a második sor feldolgoz egy összehasonlítást, ha a kisebb 16-nál akkor a kettőspont után következő sor utasítása hajtódik végre.

Az if legegyszerűbb fordítása: ha .

Miután kitesszük a feltételes utasítás után a kettőspont a következő sort már egy tab jelel (kb 4 szóközzel) beljebb kell kezdeni. Ez mutatja a fordítónak, hogy ez a sor az előző utasításunkhoz tartozik (utasítás blokk).

Az a értékét írjuk át 16-ra, nézzük így mi történik:

a = 16
if (a <16):

    print('a kisebb 16-nál')

le futtatva nem ír ki semmit, mivel a feltétel nem igaz ezért az if-hez tartozó blokk nem hajtódik végre.

Mi van akkor ha a másik esetre is végre szeretnénk hajtatni néhány utasítást.

a = 16
if (a <16):
    print('a kisebb 16-nál')

print('nagyobb vagy egyenlő 16-al')


ha beírjuk az utolsó sort (ügyelve ,hogy ott kezdődjön mint az if utasítás) akkor megkapjuk a kívánt eredményt. De teszteljük le egy másik értékkel is, a-t írjuk át egy 16-nál kisebb számra. Mi történik?

a kisebb 16-nál
nagyobb vagy egyenlő 16-al
>>>

mint látható végrehajtotta mindkét print utasítást, ez így nagyon nem jó. Mit tehetünk?

Erre találták ki a programozásban az else utasítást. Angolból lefordítva „különben” a jelentése.

a = 14
if (a <16):

    print('a kisebb 16-nál')
else:
    print('nagyobb vagy egyenlő 16-al')

Így már megfelelő lesz a kiírás, két dologra ügyeljünk:

  1. else utáni kettőspontra, ezt mindig ki kell tenni, ez jelöli az utasítás blokk kezdetét

  2. A blokk belsejében az utasítások mindig beljebb kezdődjenek legalább 4 karakterrel, vagy egy tab jel nagysággal.

Evvel a két utasítással létre hozhatók kettős elágazások:

a = 14
if (a%2):

    print('A szám páratlan')
else:
    print('A szám páros')

A modolo jel segítségével megvizsgáljuk a számot kettővel osztás után, ha van egész maradék (1) akkor igaznak veszi a feltételt és páratlant ír ki.

Ha viszont 0 a maradék, a feltétel hamis és az else-ben rögzítettek íródnak ki.
Na de mi a helyzet ha nulla értéket adunk az a-nak:

A szám páros
>>>

üzenetet kapjuk, de ez nekünk így nem jó. Kellene egy harmadik eset is ami csak a
nullával foglalkozik. Persze erre is van lehetőség egy újabb utasítás formájában:
ez az elif (különben ha).

a = 0
if (a%2):

    print('A szám páratlan')
elif (a!=0):
    print('A szám páros')
else:
    print('A szám a nulla')


Remélem azért átlátható:

1. megvizsgáljuk a szám egész maradékát ha nem nulla akkor páratlan íródik ki.
2.ha az egész maradék nulla akkor az elif utasítás megvizsgálja, hogy a szám nem egyenlő-e nullával, ha nem egyenlő akkor páros.
3.ha egyik feltétel sem bizonyul igaznak akkor kiírja az else-ben foglaltakat.


Mint láthattuk kezelhetünk egy, két, és több feltételt is ezekkel az utasításokkal.
Mindig nagyon át kell gondolni, hogy mit akarunk igazzá, illetve hamissá tenni.


Néha megeshet, hogy többszörösen egybeágyazott feltételekre van szükség, ez is megoldható az if utasítással de szigorúan be kell tartani az utasítás blokkok kezelésének szabályait.

b = 15
if (b>10): #1.blokk

    if(b<20): #2.blokk

        if(b%2): #3.blokk

            print('a szám 10-nél nagyobb, 20-ál kisebb páratlan szám')

        else: #3.blokk

            print('páros szám')

    else: #2.blokk

        print('20-nál nagyobb szám')

else: #1.blokk

    print('10-nél kisebb szám')


b értékét írjuk át 8-ra,16-ra,21-re. Teszteljük a példát.

Az egyező színű sorok ugyan ahhoz az utasítás blokkhoz tartoznak, mint látjuk midig tartani kell a behúzást nagyságát. Csak ez azonosítja be a megfelelő blokkot(helyet).

Így elsőre nagy összevisszaságnak látszik de ez csak az egybeágyazás miatt van.

Nézzük csak meg az elő kék színű sort, ha b nagyobb mit 10 csak akkor jut tovább a blokk belsejébe a következő feltételhez, különben a szintén kékkel jelölt else hajtódik végre. A kék feltétel blokkjai a sárga színű sorok , a sárgáké a rózsaszínek, a rózsaszínűek blokkjai a zöldek.


Remélem érthető volt, lényeg midig tartsuk a blokkok behúzását.