03. gyakorlat
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!
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 |
|
Hogyan lehet kilépni az else
ág futásából?¶
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 |
|
Megjegyzés: Az else
ág nem fut 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.
Összefoglalás:
- 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.
- 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.
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¶
Feladat: Írjunk függvényt, ami négyszöget rajzol a paraméterben megadott oldalhosszal.
1 2 3 4 5 6 |
|
2. feladat: Sokszög rajzolás¶
Feladat: Í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.
1 2 3 4 5 6 |
|
3. feladat: Csigavonal¶
Feladat: Í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.
1 2 3 4 5 6 |
|
4. feladat: Tüskecsiga¶
Feladat: Í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.
1 2 3 4 5 6 7 8 9 |
|
5. feladat: Színes csigavonal¶
Feladat: 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.
1 2 3 4 5 6 7 8 9 10 |
|
6. feladat: Színes tüskecsiga¶
Feladat: 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.
1 2 3 4 5 6 7 8 9 10 11 |
|
7. feladat: Kör¶
Feladat: Írjon függvényt, ami kört rajzol!
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 |
|
Ú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 |
|
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¶
Feladat: Írjon függvényt, ami nem vár bemeneti paramétert, és True-et ad vissza, ha a toll még belül van az ablakon, és False-t ad vissza minden egyéb esetben.
1 2 3 4 |
|