Szerkesztés alatt!
Az oldal további része szerkesztés alatt áll, a tartalma minden további értesítés nélkül többször, gyakran, jelentősen megváltozhat!
Függvények, ismétlés feltétel szerint¶
Tartalom
Függvény hívása függvényből, rekurzió. A while utasítás. Feladatmegoldás függvények és while segítségével.
Ciklusok¶
while ciklus¶
A while ciklus addig fut, amíg a megadott feltétel igaz.
A feltétel minden iteráció előtt ellenőrzésre kerül, és ha hamissá válik, a ciklus leáll.
Minden ciklus törzsét egy szinttel (indenation) beljebb kell húzni egyéb esetben hibát kaphatunk (lásd az az alábbi példát).
Szintaxis:
1 2 | |
Példa: Számok kiírása 0-tól 4-ig
1 2 3 4 | |
Kimenet
1 2 3 4 5 | |
for ciklus a range() függvénnyel¶
A for ciklus általában iterál egy sorozaton.
A range() függvényt gyakran használjuk a számsorozatok létrehozásához.
A range() háromféle paraméterezése révén különböző viselkedést tudunk elérni.
start: kezdő érték (alapértelmezett 0)stop: a ciklus addig fut, amíg el nem éri ezt az értéket (de ezt már nem tartalmazza)step: lépésköz (alapértelmezett 1)
Szintaxis:
1 2 | |
range() paraméterezése¶
Csak egy paraméter megadása:
Ha a range-nek egy paramétert adunk meg, akkor a megadott érték - 1 -ig adja vissza a számokat.
Példa
1 2 | |
Kimenet
1 2 3 4 5 | |
Start és stop megadása:
Itt megadjuk a kezdő és a befejező értéket is. Az iterálás a start értékkel indul, és a stop-1 értéknél fejeződik be.
Példa
1 2 | |
Kimenet
1 2 3 4 5 | |
Start, stop és step megadása:
A harmadik paraméter a step, ami az iterációk közötti lépésközt határozza meg.
Példa
1 2 | |
Kimenet
1 2 3 4 5 | |
Break és Continue utasítások¶
break utasítás¶
A break utasítással az aktuális ciklus azonnal megszakad, és a program folytatja a végrehajtást a ciklus utáni kódrésznél.
Hasznos akkor, ha valamilyen feltétel teljesülése esetén azonnal meg akarjuk állítani a ciklust.
Példa
1 2 3 4 | |
Kimenet
1 2 3 4 | |
A ciklus a 4 elérésekor megszakad, így az utána következő értékek nem kerülnek kiírásra.
continue utasítás¶
A continue utasítással átugorhatjuk a ciklus aktuális iterációjának hátralévő részét, és a következő iterációval folytathatjuk a ciklus futását.
Példa
1 2 3 4 | |
Kimenet
1 2 3 4 5 | |
Amikor a ciklus eléri a 3-at, a continue utasítás miatt az iteráció azonnal folytatódik a következő értékkel, így a 3 kimarad a kimenetből.
Ciklusok else ága¶
A for és a while ciklusoknak van egy opcionális else ága, amely akkor fut le, ha a ciklus nem szakadt meg break utasítással.
Ez akkor hasznos, ha szeretnénk külön kezelni azt az esetet, amikor a ciklus normál módon végződik, és azt, amikor valamilyen esemény miatt megszakítjuk.
Mire jó az else ág?¶
Az else ág különösen hasznos akkor, ha például azt akarjuk ellenőrizni, hogy a ciklus nem futott-e bele egy adott feltételbe (break utasítás nélkül ért véget).
Példa for ciklusban
1 2 3 4 | |
Kimenet
1 2 3 4 5 6 | |
Példa while ciklusban
1 2 3 4 5 6 | |
Kimenet
1 2 3 4 | |
Mikor nem fut le az else ág?¶
Az else ág csak akkor fut le, ha a ciklus normál módon fejeződik be (nem break utasítással).
Ha a ciklus futása során egy break utasítás végrehajtódik, az else ág nem fog lefutni.
Példa break használatával
1 2 3 4 5 6 | |
Kimenet
1 2 3 | |
Az else ág itt nem futott le, mivel a ciklus break utasítással szakadt meg.
for _ in range()¶
A Pythonban használható egy speciális változónév: az aláhúzás (_).
Ez egy konvenció, amit akkor alkalmazunk, amikor a ciklus változóját nem használjuk a ciklus törzsében.
Például ha a for ciklusban csak azt akarjuk elérni, hogy a művelet egy bizonyos számú alkalommal fusson le, de a ciklus változójára nincs szükségünk, akkor az aláhúzás jelet (_) használjuk.
Mire jó a for _ in range()?
A for _ in range() akkor hasznos, ha nem érdekel minket az adott ciklus aktuális iterációs száma, csak azt szeretnénk, hogy egy adott számú művelet fusson le.
Ez gyakori, amikor egy feladatot meghatározott számú alkalommal kell végrehajtani, de nincs szükségünk arra, hogy a ciklusindexet (az aktuális számot) felhasználjuk a ciklus törzsében.
Példa - Egyszerű ismétlés ciklussal
Írjunk egy programot, amely egy szöveget háromszor kiír, de nem használja a ciklus változóját:
1 2 | |
Kimenet
1 2 3 | |
Ebben a példában a range(3) meghatározza, hogy a ciklus háromszor fusson le.
Az aláhúzás (_) jelzi, hogy az iterációs változót nem használjuk, mivel csak annyi a cél, hogy háromszor végrehajtsuk a print() függvényt.
- Az aláhúzás használata egy programozási szokás, amit akkor használunk, ha a változó értéke irreleváns vagy nem használatos.
- Az aláhúzás nem csak azt jelzi, hogy a ciklus változóját nem használjuk, hanem egy átláthatóbb és tisztább kódot is eredményez. Ezzel a módszerrel a programozó kifejezi, hogy a ciklus iterációs változója lényegtelen a művelet szempontjából, és a figyelem inkább a végrehajtandó műveletekre koncentrálódik.
Kiegészítő anyag: Turtle grafika¶
A Python turtle modulja egyszerű grafikai elemek rajzolására használható.
Az alábbiakban bemutatom a modul használatának alapjait, beleértve néhány alapvető műveletet és példákat.
A turtle importálása¶
1 | |
Alapvető parancsok¶
Mozgás előre és hátra:
1 2 | |
Elfordulás:
python
right(90) # 90 fok jobbra
left(45) # 45 fok balra
Rajzolás¶
Négyzet rajzolása¶
1 2 3 4 5 6 7 | |
Kör rajzolása¶
A circle() függvénnyel egyszerűen rajzolhatunk kört.
Kör rajzolása¶
1 2 3 4 5 | |
Turtle ablak bezárása¶
A turtle ablak automatikusan bezáródik a következő utasítással:
1 | |
Feladatok¶
1. feladat: Négyszög rajzolása
Írjunk függvényt, ami négyszöget rajzol a paraméterben megadott oldalhosszal.
Példamegoldás
1 2 3 4 5 6 | |
2. feladat: Sokszög rajzolás
Írjon függvényt, aminek két paramétere van, egy n egész szám és egy valós oldalhossz, és nem ad vissza semmit. A függvény rajzoljon szabályos n-szöget, a megadott oldalhosszúsággal.
Példamegoldás
1 2 3 4 5 6 | |
3. feladat: Csigavonal
Írjon függvényt, aminek két paramétere van, egy n egész szám, és egy szög, és nem ad vissza semmit. A függvény rajzoljon egy vonalat, majd forduljon el jobbra az adott szöggel, és rajzoljon egy kicsit hosszabb vonalat. Ezt n-szer ismételje meg.
Példamegoldás
1 2 3 4 5 6 | |
4. feladat: Tüskecsiga
Írjon függvényt, aminek két paramétere van, egy n egész szám, és egy szög, és nem ad vissza semmit. A függvény rajzoljon egy vonalat, majd lépjen vissza ugyanennyit, majd forduljon jobbra az adott szöggel. Ezt n-szer ismételje meg, mindig egy kicsit hosszabb vonalat rajzolva.
Példamegoldás
1 2 3 4 5 6 7 8 9 | |
5. feladat: Színes csigavonal
Valósítsa meg az előző csigavonal függvényt úgy, hogy az egymást követő szakaszok felváltva két színnel legyenek megrajzolva.
Példamegoldás
1 2 3 4 5 6 7 8 9 10 | |
6. feladat: Színes tüskecsiga
Valósítsa meg az előző tüskecsiga függvényt, hogy az egymás után következő tüskék felváltva három színnel legyenek megrajzolva.
Példamegoldás
1 2 3 4 5 6 7 8 9 10 11 | |
7. feladat: Kör
Írjon függvényt, ami kört rajzol!
1. példamegoldás
Igazából ha a sokszög függvényt elég nagy n-nel hívjuk meg, akkor az kicsit hunyorogva egészen körnek látszik...
1 2 3 4 5 6 | |
2. példamegoldás
Úgy is lehet kört rajzolni, hogy haladunk egy nagyon picit, aztán fordulunk egy nagyon picit, és mindezt addig ismételjük, míg visszaérünk a kiindulóponthoz.
1 2 3 4 5 6 | |
3. példamegoldás
A kör koordinátageometriából ismert képletét használva rajzoljunk kört!
1 2 3 4 5 6 7 8 9 10 11 | |
8. feladat: Toll pozíciójának ellenőrzése
Írjon függvényt, ami nem vár bemeneti paramétert, és True-t ad vissza, ha a toll még belül van az ablakon, és False-t ad vissza minden egyéb esetben.
Példamegoldás
1 2 3 4 | |