Kategória: Python gyerekeknek.
Table of Contents
|
Egyszerű feltétel
Elmélet
A fentiekben megismerkedtünk a szöveggel és a számokkal. A következő alaptípus a logikai, ami igaz és hamis értéket vehet fel. Ezt a Pythonban így hívjuk: True és False (így, nagy kezdőbetűvel). Ennek a feltételkezelésnél van szerepe.
A feltételkezelésnél a következőket kell megjegyeznünk:
- Az if utasítással indul, ami azt jelent angolul, hogy ha.
- Az if után jön a feltétel. (Aki már látott más programozási nyelvet: itt a feltételt nem kell zárójelek közé tenni.)
- A sort kettősponttal (:) zárjuk.
- Azt az utasítást, vagy azokat az utasításokat, amelyeket akkor szeretnénk, hogy lefussanak, ha a feltétel igaz, egyformán beljebb kell húzni.
Példa:
number = 3 if number > 2: print('A szám nagyobb kettőnél.')
Ha ezt lefuttatjuk, akkor kiírja, hogy a szám nagyobb kettőnél. Ugyanez a logika Scratch-ben:
Próbáljuk ki azt, hogy az első sorban a számot átírtuk egy olyan számra, ami nem nagyobb kettőnél, pl. number = 1, és futtassuk le ismét. Ez esetben nem ír ki semmit.
Több utasítást is írhatunk a belső ágra; ez esetben fontos, hogy az utasítások egyformán legyenek behúzva:
number = 1 if number > 2: print('A szám nagyobb kettőnél.') print('A szám még minding nagyobb kettőnél.') print('Feltétel után')
A feltételnek lehet egy "különben" ága is, ami akkor fut le, amikor a feltétel nem igaz. Ez az else:
number = 1 if number > 2: print('A szám nagyobb kettőnél.') else: print('A szám nem nagyobb kettőnél.')
Ebben a példában azt fogja kiírni, hogy a szám nem nagyobb kettőnél. Scratch-ben ezt a következőképpen programozhatjuk:
Ha több feltételt és több ágat szeretnénk, akkor azt az elif segítségével tudjuk megtenni:
number = 2 if number > 2: print('A szám nagyobb kettőnél.') elif number < 2: print('A szám kisebb kettőnél.') else: print('A szám pont kettő.')
Ami azt írja ki, hogy a szám pont kettő.
Ezt Scracth-ben már csak összetett módon tudjuk lekódolni:
A feltételek egymásba is ágyazhatóak; ez esetben még jobban kell ügyelnünk a behúzásokra:
number = 4 if number > 2: print('A szám nagyobb kettőnél.') if number > 5: print('A szám ötnél is nagyobb') else: print('De a szám ötnél nem nagyobb.') else: print('A szám nem nagyobb kettőnél.')
A fentiekben azt vizsgáltuk, hogy a szám nagyobb-e vagy kisebb-e mint kettő. De vajon hogyan vizsgáljuk azt, hogy a szám pontosan kettő-e? Először most kivételesen lássuk, hogyan tudtuk ezt Scratch-ben megoldani:
Ott tehát egy egyenlőségjel (=) van. Csakhogy ez a Pythonban már "foglalt": ott értékadást jelent. Az egyenlőség vizsgálathoz két egyenlőségjelet kell használnunk (==):
number = 2 if number == 2: print('A szám pont kettő.')
Tagadni a not szócskával tudunk:
number = 3 if not number == 2: print('A szám nem kettő.')
Ám ennek van egy gyakoribb formája: az == helyett ezt írjuk: !=:
number = 3 if number != 2: print('A szám nem kettő.')
Ugyanez Scratch-ben:
A Pythonban van még két összehasonlító művelet, ami (közvetlenül) nincs Scratch-ben: a nagyobb vagy egyenlő (>=) és a kisebb vagy egyenlő (<=):
number = 2 if number >= 2: print('A szám nagyobb vagy egyenlő mint kettő.') if number <= 2: print('A szám kisebb vagy egyenlő mint kettő.')
A példában mindkettő feltétel igaz lesz.
Feladat
Vajon hogyan lehet szöveget összehasonlítani? Már egész sokat tudunk; készítsük el a következő játékot:
- A program tegyen föl egy kérdést
- Kérje be a választ.
- Hasonlítsa össze a helyes válasszal.
- Ha helyes, akkor írja ki, hogy helyes.
- Ha nem helyes, akkor írja ki, hogy nem helyes, és a helyes választ is írja ki.
- Legyen összesen 5 kérdés.
- A végén írja ki, hogy hány százalékot ért el a játékos.
points = 0 answer = input('Mi Magyarország fővárosa? ') if answer == 'Budapest': print('Helyes!') points = points + 1 else: print('A válasz helytelen; a helyes válasz Budapest lett volna.') print() answer = input('Hány fokon forr a víz? ') if answer == '100': print('Helyes!') points = points + 1 else: print('A válasz helytelen; a helyes válasz 100 lett volna.') print() answer = input('Melyik az az állat, amelyiknek nagy füle és hosszú ormánya van? ') if answer == 'elefánt': print('Helyes!') points = points + 1 else: print('A válasz helytelen; a helyes válasz elefánt lett volna.') print() answer = input('Hogy mondjuk angolul azt, hogy alma? ') if answer == 'apple': print('Helyes!') points = points + 1 else: print('A válasz helytelen; a helyes válasz apple lett volna.') print() answer = input('Mi volt Petőfi vezetéknevű költőnk keresztneve? ') if answer == 'Sándor': print('Helyes!') points = points + 1 else: print('A válasz helytelen; a helyes válasz Sándor lett volna.') print() percentage = str(100 * points / 5) + '%' print('Az eredmény: ' + percentage)
Önálló feladat
Tegyen fel egy olyan kérdést, aminek az eredménye szám (pl. mikor született valaki), és írja ki azt, hogy eltalálta, ill. a helyes válasz kisebb vagy nagyobb a beírtnál. (Tipp: számmá kell konvertálni az int(s) eljárással.)
Teszt
1. feladat
Mit jelent az alábbi feltétel?
if x % 2 == 1:
A Semmit; ilyen művelet nincs.
B Megvizsgálja, hogy az x páros-e.
C Megvizsgálja, hogy az x páratlan-e.
D Megvizsgálja, hogy 2 egyenlő-e 1-gyel (mindig hamis).
2. feladat
Mit jelent az alábbi feltétel?
if 2 < x < 5:
A Ez hibás.
B Megvizsgálja, hogy az x 2 és 5 közötti-e.
C Megvizsgálja, hogy az x kisebb-e mint 5 vagy nagyobb-e mint 2; lényegben tehát mindig igazat ad.
D Megvizsgálja, hogy az x 2-nél kisebb-e vagy 5-nél nagyobb-e.
3. feladat
Mit csinál az alábbi kód?
if x > 2: print('A szám nagyobb kettőnél.') else: print('A szám pont kettő.') elif x < 2: print('A szám kisebb kettőnél.')
A Semmit; ez hibás.
B Az x értékétől függően kiírja, hogy a szám nagyobb kettőnél, pont kettő vagy kisebb kettőnél.
C Ha az x pont kettő, rosszul működik, egyébként jól.
D Csak akkor működik jól, ha x pont kettő.
Több feltétel
Elmélet
Ha több feltételnek kell egyszerre teljesülnie, akkor azokat az and (magyarul és) szócskával tudjuk összekötni:
number = 3 if number > 2 and number < 5: print('A szám nagyobb mint kettő, és kisebb mint öt.')
Itt tehát a feltétel akkor lesz igaz, ha a szám nagyobb mint 2 és ugyanakkor kisebb mint 5. Ugyanez Scratch-ben:
Ha legalább az egyik feltételnek teljesülnie kell, akkor az or (vagy) szócskát használhatjuk:
number = 3 if number < 2 or number > 2: print('A szám nem kettő.')
Scratch-ben:
A logikai és és vagy műveteket (az összehasonlítással és a tagadással) tetszőleges mélységben kombinálhatjuk. Szükség esetén zárójeleket használhatunk. A Pythonnak (és a többi programozási nyelvnek) óriási előnye a Scratch-csel szemben az, hogy a feltételeket több sorba törhetjük, míg Scratchben egy-egy bonyolultabb feltétel már alig fér ki a képernyőre.
number = 8 if (number > 2 and number < 5) or (number > 7 and number < 9): print('A szám 2 és 5 közötti vagy 7 és 9 közötti.')
Ill.:
Emiatt is érdemesebb összetettebb feladatokra olyan programozási nyelvet használni, mint a Python, a Scratch-csel szemben.
A feltételeknél ismerjünk meg egy szöveg műveletet is, mégpedig azt, hogy egy szöveg tartalmaz-e egy adott betűt. Ezt az in operátorral tudjuk megtenni:
name = 'Csaba' if 'a' in name: print("A név tartalmazza az 'a' betűt")
Figyeljük meg, hogy most nem egyszeres, hanem kétszeres idézőjelek közé tettük a szöveget, hogy a betűt egyszeres idézőjelek közé tehessük a szövegen belül!
A Scratch-ben ugyanez:
Feladat
Kérdezze meg a program a hőmérsékletet, valamint azt, hogy esik-e az eső. Ha a hómérséklet 15 és 25 fok közötti, és nem esik az eső, akkor írja ki azt, hogy kellemes kirándulóidő van, egyébként meg azt írja ki, hogy nincs rossz idő, csak rosszul felkészült kiránduló.
temperature = input('Hány fok van? ') rain = input('Esik az eső (igen/nem)? ') temperature_int = int(temperature) if temperature_int >= 15 and temperature_int <= 25 and rain == 'nem': print('Szép kirándulóidő van!') else: print('Nincs rossz idő, csak rosszul felkészült kiránduló.')
Önálló feladat
Bonyolítsunk a fenti időjárásos feladatot a következőképpen: ha fúj a szél, akkor 20-30 fok között van szép kirándulóidő, ha nem fúj, akkor 10-25 fok között.
Teszt
1. feladat
Mit jelent az alábbi feltétel (x egy egész szám)?
if x > 2 and x < 5:
A Ez szintaktikailag egy hibás kód; ez lenne a helyes: 2 < x and x < 5.
B Megvizsgálja, hogy az x 2 és 5 között van-e, a határokat is beleértve, így 2, 3, 4 és 5 esetén ad vissza igaz értéket.
C Megvizsgálja, hogy az x 2 és 5 között van-e, de nem beleértve a határokat, így 3 és 4 esetén ad vissza igaz értéket.
D Mindig igazat ad, az x értékétől függetlenül.
2. feladat
Mit jelent az alábbi feltétel (x egy egész szám)?
if 2 <= x and x <= 5:
A Ez szintaktikailag egy hibás kód; így lenne helyes: x >= 2 and x <= 5.
B Megvizsgálja, hogy az x 2 és 5 között van-e, a határokat is beleértve, így 2, 3, 4 és 5 esetén ad vissza igaz értéket.
C Megvizsgálja, hogy az x 2 és 5 között van-e, de nem beleértve a határokat, így 3 és 4 esetén ad vissza igaz értéket.
D Mindig igazat ad, az x értékétől függetlenül.
3. feladat
Mit jelent az alábbi feltétel (x egy egész szám)?
if x <= 5 or 2 <= x:
A Ez szintaktikailag egy hibás kód; így lenne helyes: x >= 2 and x <= 5.
B Megvizsgálja, hogy az x 2 és 5 között van-e, a határokat is beleértve, így 2, 3, 4 és 5 esetén ad vissza igaz értéket.
C Megvizsgálja, hogy az x 2 és 5 között van-e, de nem beleértve a határokat, így 3 és 4 esetén ad vissza igaz értéket.
D Mindig igazat ad, az x értékétől függetlenül.