Python: elágazás(ok)

Programozás Python

Elágazás avagy feltétel vizsgálat. Matematika óráról ismerős lesz, feltételeket fogunk vizsgálni. Ezek lehetnek igazak, vagy hamisak. A feltétleknél a jól ismert relációs jeleket használjuk.

egyenló: a == b
nem egyenlő: a != b
kisebb mint… : a < b kisebb egyenlő: a <= b nagyobb: a > b nagyobb vagy egyenló: a >= b

Nézzünk pár nagyon egyszerű példát! Arra figyelj, hogy az utasításnak beljebb kell lennie, mint a feltételnek, és a feltétel végére kell a kettőspont! Vegyünk két számot, nézzük mi a helyzet, ha b>=a-nál?

a = 5
b = 10
if b >= a:
  print("b nagyobb, egyenlő mint a")

Ez eddig egyszerű, de mi van akkor, ha a nagyobb? Szükség lesz egy else ágra is!

a = 11
b = 10
if b >= a:
  print("b nagyobb, vagy egyenlő mint a")
elif a > b:
  print("a nagyobb, mint b")

Ha több, mint két elágazásunk van, akkor össze kell fűzni őket.

a = 10
b = 20
if b > a:
  print("b nagyobb, mint a")
elif a == b:
  print("a és b egyenlő")
else:
  print("a nagyobb, mint b")

A Pythonban van lehetőség a kódok rövidítésére is.

a = 5
b = 10
if a > b:
  print("a nagyobb, mint b")
#ez röviden:
if a > b: print("a nagyobb, mint b")
#----if else---------------------
if b >= a:
  print("b nagyobb, vagy egyenlő mint a")
elif a > b:
  print("a nagyobb, mint b")
#röviden
print("a nagyobb mint b") if a > b else print("b nagyobb mint a")
#-----if elif else-----------------
print("a nagyobb") if a > b else print("a és b egyenlő") if a == b else print("b nagyobb, mint a")

Nézzünk egy példát! Kérj be egy számot, és vizsgáld meg oszható-e kettővel, hárommal! Ha mindkettővel osztható, akkor osztható hattal! Vizsgáld meg a lehetséges eseteket (csak kettővel, csak hárommal osztható) Az oszthatóságot a maradékos osztással vizsgáljuk, ha a maradék 0 akkor osztható.

 x = int(input("Írd be a számot!"))
    if x % 2 == 0:
        if x % 3 == 0:
            print("A szám osztható 6-tal.")
        else:
            print("A szám osztható 2-vel, de 3-mal nem.")
    else:
        if x % 3 != 0:
            print("A szám nem osztható sem 2-vel, sem 3-mal.")
        else:
            print("A szám nem osztható 2-vel, de 3-mal igen.")

Több feltétel esetén használhatjuk az ÉS illetve a VAGY operátort. Ezen kívűl a negációt(tagadást is)

Logikai kifejezések kiértékelési sorrendje (short-circuiting): a Python balról jobbra értékeli ki a logikai kifejezéseket, és ha az első rész már eldönti az eredményt, a másodikat nem vizsgálja.

a = 10
b = 20
c = 30
if a > b and c > a:
  print("Mindkét feltétel igaz!")
if a > b or a > c:
  print("Legalább az egyik feltétel igaz!")

Beágyazott elágazások:

Hibakezelés alapok

match-case szerkezet A match-case szerkezet a Python 3.10-től érhető el, és a klasszikus switch-case szerkezethez hasonló

Példák

Példa 1: Készíts egy programot, amely dollár és forint között vált át valutát! Árfolyam legyen? 1usd = 400huf, de be is kérhetjük a felhasználótól.

arfolyam = 400
penznem = input("Milyen valuta? f/u? ")
mennyiseg = int(input("Mennyiség? "))
if penznem == "f":
    eredmeny = mennyiseg / arfolyam
    print(mennyiseg," Ft= ",eredmeny," $")
if penznem == "u":
    eredmeny = mennyiseg * arfolyam
    print(mennyiseg," $= ",eredmeny," Ft")

Példa 2: Számold ki egy háromszög területét Heron képlettel! A bekért vagy véletlenszerű adaokat ellenőrizd, hogy szerkeszthető-e belőlük háromszög! A példában véletlen számokat használtam, iletve a Heron képletben van gyökvonás. A Python sok beépített függvényt tartalmaz, melyek használatához importálni kell az adott osztályt. A matematikai függvényekhez importáljuk a math osztályt, a véletlen számokhoz a random osztályt. (import math, random) Random számokat a random függvénnyyel állítunk elő. A random.randint(1, 6) 1 és 6 közötti számokat fog generálni. A gyökvonás a math.sqrt(szám)

import math, random
#float(input("a oldal: ")) float(input("b oldal: ")) float(input("c oldal: "))
a = random.randint(1, 6)
b = random.randint(1, 6)
c = random.randint(1, 6)
print("a=",a,"b=",b,"c=",c)
if a>0 and b>0 and c>0 and (a+b>c) and (a+c>b) and (b+c>a):
    s = (a+b+c)/2
    t = math.sqrt(s*(s-a)*(s-b)*(s-c))
    print("A háromszög területe: ",t)
else:
    print("A megadott adatokból nem szerkeszthető háromszög!")

Példa 3: Egészítsük ki a téglalapos programunkat feltétel vizsgálattal! Döntsük el, hogy a bekért adatok alapján négyzet, vagy téglalap! Vizsgáljuk meg, hogy a bekért adatok számok-e! A bekért adatokat az isdigit() függvénnyel tudjuk megvizsgálni, ha számok akkor a függvény igaz értéket ad vissza.
Megnézzük hibakezeléssel is a példát.

Hibakezeléssel így lehetne kiegészíteni: (ebben az esetben nem kell az if-es rész)

Példa 4. Döntsük el egy évszámról, hogy szökőév-e? Egy év szökőév ha: minden 4.év kivéve a 100-as kerek éveket és a 400-zal oszthatóakat!

év = int(input('Kérek egy évszámot! '))
if év % 4 == 0 and év % 100 != 0 or év % 400 == 0:
    szokoev = True
else:
    szokoev = False
print(év, 'szökőév.') if szokoev else print(év, 'nem szökőév.')

Példa 5: Melyik hónap melyik évszakhoz tartozik? Hagyományos if-else szerkezetes megoldás

hónap = int(input('Add meg a hónap sorszámát! (1-12) '))
évszak = ''
if 3 <= hónap <= 5:
    évszak ='tavasz'
elif 6 <= hónap <= 8:
    évszak ='nyár'
elif 9 <= hónap <= 11:
    évszak ='ősz'
elif 1 <= hónap <= 2 or hónap == 12:
    évszak ='tél'
else: 
    évszak ='nincs ilyen hónap'
    
print(hónap, '. hónap: ', évszak, sep='')

match-case megoldás

Példa 6: Kérd be egy dolgozat maximális pontszámát, számold ki a ponthatárokat a középszintű érettségi szerint! Hanyast kap az elért pontszámra a diák?

max_pont = int(input('Maximális pontszámot? '))
elert_pont = int(input('Elért pont? '))
if elert_pont >= max_pont * 0.80:
    print('A dolgozat jeles.')
elif elert_pont >= max_pont * 0.6:
    print('A dolgozat jó.')
elif elert_pont >= max_pont * 0.4:
    print('A dolgozat közepes.')
elif elert_pont >= max_pont * 0.22:
    print('A dolgozat elégséges.')
else:
    print('A dolgozat elégtelen.')

Példa 7. Jegyekhez szöveges értékelés

Példa 8. Többszintű döntési szerkezet

Külső IF, az első szintű döntés: Ellenőrzi a legalapvetőbb feltételt (a pontszám érvényes tartományban van-e). Ha ez hamis, minden belső döntés figyelmen kívül marad.
Első Belső IF/ELIF: Ha az első feltétel igaz, a program tovább halad, és ellenőrzi a pontszám kategóriáját (>= 90 vagy >= 70).
Második Belső IF: Csak akkor kerül sor erre a döntésre, ha a pontszám eléri a 90-et. Ez a döntés függ az aktivitas változó értékétől, és ez alapján kerül hozzárendelésre a végső bónusz.

Frissítve: 2025.11.09.