A malnasuli.hu oldalon megjelenő cikkeket, illetve a cikkekben közreadott mintaprogramokat a publikálás előtt természetesen átnézzük és teszteljük. Ennek ellenére előfordulhat, hogy az oldalon minden igyekezetünk ellenére hibás példaprogram jelenik meg. Köszönjük az oldal olvasóinak, ha jelzik felénk ezeket az esetleges hibákat, amiket igyekszünk gyorsan orvosolni és javítani.
Köszönjük tehát kedves olvasónk, Soocy észrevételét, mely alapján javítottuk a 4. példaprogramot és a hozzá kapcsolódó leírást.
2021.01.03.

1. Feltételek és a „HA” (if) kulcsszó

A Python támogatja a matematikában megszokott logikai feltételeket:

  • Egyenlő: a == b
  • Nem egyenlő: a! = B
  • Kevesebb, mint: a <b
  • Kevesebb vagy egyenlő: a <= b
  • Nagyobb, mint: a> b
  • Nagyobb vagy egyenlő: a> = b

Ezeket a feltételeket többféle módon, többféle kombinációban lehet használni, leggyakrabban a döntéshozatal és a ciklusok esetében.

Az első egyszerű példa a döntéshozatalra bekér két numerikus értéket, és összehasonlítja azokat:

a = input("az első szám: ")
b = input("a második szám: ")
if b >a:
  print("a második szám nagyobb mint az első")

A példában két változót használunk (a,b) amiket az input paranccsal „töltünk fel” értékkel. Az ifb > a feltétel igaz értéke esetén végrehajtódik a print parancs, ami a terminál ablakba írja az összehasonlítás eredményét.

A programnak ez a verziója nem reagál az összehasonlítás hamis értékére, illetve csak egyszer hajtódik végre. Fontos szintaktikai szabály, hogy az if…. összehasonlítás sorát „:” zárja, valamint az, hogy az utána következő, az összehasonlítás igaz értéke esetén végrehajtódó sorok behúzással, tabulátorral íródjanak! A program alábbi beírása esetén:

a = input("az első szám: ")
b = input("a második szám: ")
if b >a:
print("a második szám nagyobb mint az első")

hibaüzenetet kapunk. Ez a behúzás elhagyására utal!

2. Az „ELIF” kulcsszó

Az elif kulcsszó a pythonban kb. azt jelenti: “Ha a korábbi feltételek nem voltak igazak, akkor próbáld ki ezt a feltételt”.

Nézzük meg az előbbi programot ezzel a bővítéssel:

a = input("az első szám: ")
b = input("a második szám: ")
if b >a:
    print("a második szám nagyobb mint az első")
elif a==b:
print("a két szám egyenlő")

Ez a programváltozat már két esetet tud levizsgálni:ha a második szám a nagyobb, illetve, ha a két szám egyenlő.

Az összes lehetőséget az alábbi megoldással értékelhetjük ki:

a = input("az első szám: ")
b = input("a második szám: ")
if b >a:
    print("a második szám nagyobb mint az első")
elif a==b:
print("a két szám egyenlő")
elifa > b:
    print("az első szám  nagyobb mint a második")

A fenti megoldást adja az „else” parancs használata is:

3. Az „ELSE” kulcsszó

Az alapvető különbség, hogy míg az „elif” kulcsszóval konkrét leválogatást tettünk meg, az „else” bármi egyéb értékre ugyan azt a választ adja. Ez ebben az esetben azonos mint az előbbi példában, hiszen csak három lehetőség van.

a = input("az első szám: ")
b = input("a második szám: ")
if b >a:
    print("a második szám nagyobb mint az első")
elif a==b:
print("a két szám egyenlő")
else:
    print("az első szám  nagyobb mint a második")

Ha csak egy végrehajtandó utasítás van, akkor ugyanabba a sorba is írhatjuk, mint az if utasítást.

if a > b: print("a nagyobb mint b")

4. Egymásba ágyazott döntéshozatal (nested if)

A programozás során előfordulhat olyan helyzet, hogy egy feltétel teljesülését egy korábbi feltétel teljesülése esetén szeretnénk levizsgálni. Ilyen esetekben használhatjuk a beágyazott if szerkezetet. Erre olyankor lehet szükség, ha pl. két feltétel egyidejű teljesülését szeretnénk kimutatni.

Az ún. beágyazott if megoldás esetében egy második if-elif-else szerkezetet használunk az első if-elif-else belsejében.

A fent említett megoldás szintaxisa:

if kifejezés1:
   parancs(ok)
   if kifejezés2:
      parancs(ok)
   elif kifejezés3:
      parancs(ok)
   else
      parancs(ok)
elif kifejezés4:
   parancs(ok)
else:
   parancs(ok)

Nézzünk egy példát a fenti esetre. Legyen a feladat annak eldöntése, hogy egy adott szám osztható-e egyszerre 3-mal illetve 2-vel, vagy csak az egyikkel, vagy a másikkal, vagy egyikkel se. A megoldásban alkalmazzuk a Python un. modulo (%) (maradék nélküli osztás) függvényét, ami az oszthatóság teljesülése esetén 0-t ad eredményül.

A mintaprogram:

x = int(input("írj be egy számot: "))
if x%2 == 0:
   if x%3 == 0:
      print ("a szám osztható 3-mal és 2-vel")
   else:
      print ("a szám osztható 2-vel de nem osztható 3-mal")
else:
   if x%3 == 0:
      print ("a szám osztható 3-mal de nem osztható 2-vel")
   else:
      print  ("a szám sem 2-vel, sem 3-mal nem osztható")

5. Kombinált döntéshozatal

Bizonyos esetekben szükségünk lehet a leválogatásokat bizonyos értékhatárokhoz kötni, pl. ponthatárok és osztályzatok esetén. Könnyítsük meg a dolgozatokat javító és pontozó tanár dolgát egy olyan egyszerű kis algoritmussal, ami kiszámolja az adott pontszámhoz tartozó érdemjegyet!

A ponthatárok legyenek: – 20: elégtelen, 21 – 30: elégséges, 31 – 50: közepes, 51 – 80: jó, 81 – 100: jeles.

x = int(input("írd be a pontszámot: "))
ifx > 80:
print("jeles")
if x > 50 and x <80:
print("jó")
if x > 30 and x <50:
print("közepes")
if x > 20 and x <30:
print("elégséges")
elif x < 20:
print("elégtelen")

A fenti példaprogramot érdemes kombinálni egy ciklussal, hogy ne kelljen minden egyes érték megadása utána újra futtatni az alkalmazást. Erre szolgál a python „While” illetve „For” parancsa!

A forráskódok letölthetőek:

Folytatása következik…az előző részt pedig itt találod…