LOGIKAI MŰVELETEK

Néha szükségessé válik, hogy a Python programunknak megmondjuk, hogy bizonyos feladatokat csak a megadott feltételek teljesülése esetén futtasson le.

if - else statement (“ha” feltételhez kötött állítás)

A Python if utasítása lehetővé teszi, hogy megmondjuk a programunknak, hogy mit tegyen akkor, ha bizonyos feltételek teljesülnek. Az else pedig akkor fog lefutni, ha az if feltételnek nem felel meg a kódunk, tehát hétköznapi nyelven az else azt is jelenti, hogy “máskülönben“. 

Országok nevei helyesen írva (példa)

Jelenlegi megbízónk adott nekünk egy listát országok neveivel. Az első dolog, amivel szembesülünk, hogy minden ország kisbetűvel van írva. Tény, hogy alapesetben az országok neveit nagy kezdőbetűkkel kellene írnunk, mivel tulajdonnevekről van szó. Ez egy viszonylag egyszerű műveletnek ígérkezik, mivel már tudjuk, hogy a “for” loop segítségével és a title() utasítással minden elemnek nagy kezdőbetűt tudunk adni.

A probléma az, hogy az „Amerikai Egyesült Államok” „USA”-ként szerepel a listánkban, és a fenti műveleteket végrehajtva az alábbi nevek egységesen nagy kezdőbetűvel jelennek meg, még az “Usa” is.

Péda if feltétel nélkül:

				
					# Lista tömb létrehozva az országok neveivel
countries = ["magyarország", "usa", "ausztria", "anglia", "németország"]

# for ciklus, amely itaratívan végigmegy a listánkon
for country in countries:
    print(country.title())
				
			

Konzol:

				
					Magyarország
Usa
Ausztria
Anglia
Németország
				
			

A konzolban láthatjuk, hogy az “Usa” nem úgy jelenik meg, ahogyan szeretnénk.

A megoldás az lenne ebben az esetben, ha külön az “USA” szóra egy if kivételt eszközölnénk és az összes betűkarakterét nagybetűsre változtatnánk, a többi ország nevének pedig az első betűje lenne csak a nagybetű.

Péda if feltétel hozzáadásával:

				
					# Lista tömb létrehozva az országok neveivel
countries = ["magyarország", "usa", "ausztria", "anglia", "németország"]

# for ciklus, amely itaratívan végigmegy a listánkon
for country in countries:

    # if feltétel: ha a listában talál olyan nevet, amelyet 'usa' - ként írunk:
    if country == "usa":

        # Írassuk ki a konzolban a fenti feltételnek megfelelő szót, de minden karakter legyen nagybetű
        print(country.upper())

    else:
        # Ellenkező esetben, a fenti kivételtől eltekintve minden szónak csak az első betűje legyen nagybetű
        print(country.title())
				
			

Konzol:

				
					Magyarország
USA
Ausztria
Anglia
Németország

				
			

A programunk futtatása után láthatjuk, hogy az “USA” betűi egy if kivétel és egy upper() függvény beiktatása után teljesen rendben van, míg a többi országnév ugyanúgy jelenik meg, mint korábban.

Egy gyanúsított nyomában (példa)

Tegyük fel, hogy egy magánnyomozó cégnél dolgozol. Adott néhány gyanúsított egy bűncselekmény után, és őrizetben tartják őket, amíg a rendőrség további vizsgálatokat végez az ügyben.

Vegyük Christian nevű bűnöző esetét, akihez azonos ujjlenyomat-egyezéseket keresünk. Az őrizetben tartott gyanúsítottak ujjlenyomatát vizsgáljuk. Ehhez a fajta szűréshez Python programot kell írnunk.

A példa kedvéért a lista tömbben található nevekre tekintsünk úgy, mintha ujjlenyomatok lennének nevek formájában.

Forráskódunk:

				
					# Gyanúsítottak ujjlenyomat listája
all_crime_suspects = ["Imre", "Géza", "Antal", "Christian", "Dávid"]

# For ciklus a listában való iteratív kereséshez
for crime_suspects in all_crime_suspects:
    # Ha az ujjlenyomat "Christian"-nam megegyezik:
    if crime_suspects == "Christian":
        # Név kiíratása + az ennek a feltételnek megfelelő szövegkörnyezet
        print(crime_suspects + " - Tartsd vissza további vizsgálatok céljából.")
    else:
        # Név kiíratása + az ennek a feltételnek megfelelő szövegkörnyezet
        print(crime_suspects + " - Fogság alól való felmentés.")

				
			

A for ciklust használjuk arra, hogy megtaláljuk a gyanúsított bűnözőt, akinek az ujjlenyomata leginkább Christian ujjlenyomatára hasonlít.

Az if utasítás beillesztésével a Python-t úgy programoztuk, hogy egy üzenetet mutasson, amely azt jelzi, hogy egy gyanúsítottat további vizsgálatok céljából még őrizetben kell tartani, ha az ujjlenyomata megegyezik Christian ujjlenyomatával.

A Python megmondja nekünk, hogy ha az ujjlenyomat megegyezik “Christian” ujjlenyomatával, akkor tartsuk vissza a gyanúsítottat további vizsgálatok elvégzéséhez. Ha nem egyezik meg, akkor fel kell mentenünk a fogság alól.

				
					Imre - Fogság alól való felmentés.
Géza - Fogság alól való felmentés.
Antal - Fogság alól való felmentés.
Christian - Tartsd vissza további vizsgálatok céljából.
Dávid - Fogság alól való felmentés.
				
			

Feladat megoldása == (egyenlő) helyett != (nem egyenlő) feltétel megadásával

Ha úgy szeretnénk, a fenti feladatot megoldhatjuk úgy is, ha olyan feltételt írunk, ami nem egyezik meg a keresett kifejezéssel. Az eredményünk ugyanaz lesz.

Forráskódunk:

				
					# Gyanúsítottak listája
all_crime_suspects = ["Imre", "Géza", "Antal", "Christian", "Dávid"]

# For ciklus a listában való iteratív kereséshez
for crime_suspects in all_crime_suspects:
    # Ha a név != (nem egyyenlő) "Christian":
    if crime_suspects != "Christian":
        # Név kiíratása + az ennek a feltételnek megfelelő szövegkörnyezet
        print(crime_suspects + " - Fogság alól való felmentés.")
    else:
        # Név kiíratása + az ennek a feltételnek megfelelő szövegkörnyezet
        print(crime_suspects + " - Tartsd vissza további vizsgálatok céljából.")



				
			

Konzol:

				
					Imre - Fogság alól való felmentés.
Géza - Fogság alól való felmentés.
Antal - Fogság alól való felmentés.
Christian - Tartsd vissza további vizsgálatok céljából.
Dávid - Fogság alól való felmentés.
				
			

ÁTTEKINTÉS

Ebben a fejezetben megértettük, hogyan működnek a feltételes állítások. Ezekkel az utasításokkal megadhatjuk, hogy a Python milyen kritérium teljesülésekor futtassa a feltételes utasítást követő kódot. Erre példa az elif és az else.