Előjelek
Készíts függvényt, amelyik megadja két számról, hogy egyezik-e az előjelük!
Szökőév
Készíts függvényt, amelyik adott évszámról eldönti, hogy az szökőév-e. (Szökőév minden negyedik, nem szökőév minden századik, mégis az minden 400-adik. A 2000. évben ezért volt szökőév.)
Armstrong-számok
Írj függvényt, amely megmondja egy számról, hogy hány számjegyű!
Írj függvényt, amely hatványozást végez egész számokon!
Készíts programot, mely Armstrong-számokat keres, és a találtakat megjeleníti a képernyőn! N-jegyű Armstrong számoknak nevezzük azokat a számokat, melyek számjegyei N-dik hatványainak összege éppen a számot adja. Például: egy négyjegyű Armstrong-szám a 1634, mivel: 1634=14+64+34+44. Használd az előbb megírt függvényeket!
Boldog számok
Írj programot, amely kiírja két pozitív egész szám közé eső összes boldog számot! Az alsó és a felső határt a felhasználó adhassa meg!
Boldog szám az, amelyre igaz, hogy ha kiszámítjuk számjegyeinek négyzetösszegét, majd ezt a kapott számmal addig ismételjük, amíg egyjegyű számot nem kapunk, akkor az eredmény 1 lesz. Például boldog szám a 23, mert 22 + 32 = 13, 12 + 32 = 10 és végül 12 + 02 = 1.
Nagyon tökéletes számok
Nagyon tökéletes számoknak nevezzük azokat a számokat, amelyek osztói összegének osztóit összegezve az eredeti szám kétszeresét kapjuk. Az első ilyen szám a 2, mert osztóösszege 1+2=3, aminek osztóösszege 1+3=4, ami az eredeti 2 duplája.
Melyik az 5-ödik ilyen? Írj programot, amelyik kiszámítja és kiírja!
A kapitány
A kapitány abban az évben született, amely 2024-hez alulról a legközelebbi olyan szám, melynek osztói száma 8, és van benne 7-es számjegy. Hány éves a kapitány? Határozd meg algoritmikus módszerrel egy programban az évszámot! Írd ki ezt is, és azt is, hogy most hány éves!
Használj top-down tervezést! Ha jól csinálod, a main()
kb. 5 sor, és azt mondja:
Az év változóban legyen 2024, és amíg nem igaz a vizsgált számra, hogy az osztóinak száma 8, és van benne 7-es
számjegy, addig kell csökkenteni az év változó értékét.
Írj általában is használható függvényeket, amelyek közül az első a) megadja egy szám osztóinak darabszámát; a második b) megadja, hogy egy megadott számban szerepel-e egy megadott számjegy! Használd fel ezeket a főprogramban!
Ebben a feladatban NE használj sztringműveleteket!
(1978 a megoldás.)
Sakktábla
Írj függvényeket, amelyek paraméterei két koordinátapár, amelyek egy mezőre hivatkoznak a
sakktáblán! (Ez lehet négy karakter is, pl. d6
és e8
.) Az egyes
függvények mondják meg a logikai típusú visszatérési értékükben, hogy az adott mezőpár helyes
lépés-e egy királynak, bástyának, futónak, huszárnak vagy vezérnek!
Írj programot, amely megkérdezi egy kiinduló mezőnek a koordinátáit a felhasználótól, és aztán kilistázza az egyes figurák által elérhető mezőket!
A függvények segítségével „sormintamentessé” tehető a program. Hasonlítsd össze az így kapott programot a régebbi gyakorlófeladat anyagában található megoldással. Miben segítenek még a függvények?
Segítség: A karakterek a számítógép számára csak számok (belső ábrázolás), nekünk jelennek meg betűkként
(külső ábrázolás). Az ord()
függvénnyel megtudhatjuk, hogy egy karakternek mi a kódja.
Az abc ékezet nélküli betűi sorban szerepelnek a kódtáblában. Pl.: ord("a") < ord("h")
Minimum, maximum, határ
A python standard könyvtárában, megtalálhatóak a min() és a max() függvények. Ezeknek 2 számot adva paraméterül visszaadják a kisebbet (min) vagy a nagyobbat (max).
Készíts egy függvényt ezen segédfüggvények felhasználásával, amely két oldalról
korlátoz egy értéket: korlatoz(szam, min, max)
adja vissza a számot, ha min
és max
közé
esik, amúgy pedig min
-t vagy max
-ot attól függően, hogy merre haladta meg a tartományt.
Segítség: a korlátozásnál figyelni kell arra, hogy az alulról limitáláshoz a max()
függvényt kell használni, a
felülről limitáláshoz pedig a min()
függvényt.
Ötvenhét
Készíts függvényt, mely egy 1 és 99 közötti természetes számot képes szöveggé alakítani! Pl.:
5: öt 44: negyvennégy 16: tizenhat
Ezerkilencszázhetvenöt
A feladat ugyanaz, mint fent, csak a tartomány legyen 1 és 999999 között. 2000-ig minden számot egybeírunk, 2000 fölött az ezres és ezer alatti rész közé kötőjelet kell tenni. Példák:
625: hatszázhuszonöt 1975: ezerkilencszázhetvenöt 8000: nyolcezer 23870: huszonháromezer-nyolcszázhetven
Variadikus függvény
Írj szorzat()
nevű függvényt, amely tetszőlegesen sok argumentumot kaphat,
és visszaadja azok szorzatát! Például szorzat(2, 8, 9)
értéke 144
legyen.
Emlékeztető: ehhez variadikus függvényt kell használnod.
Adott az alábbi programkód:
szamok = [24, 31, 22, 43, 10, 84, 38, 44, 84, 56, 67, 51, 56, 84, 31, 65, 69, 83, 39]
legnagyobb = szamok[0]
for i in range(1, len(szamok)):
if szamok[i] > legnagyobb:
legnagyobb = szamok[i]
print(legnagyobb)
indexek = []
for i in range(0, len(szamok)):
if szamok[i] == legnagyobb:
indexek.append(i)
print(indexek)
Ez meghatározza, mi a számsor maximuma, utána pedig egy listába kigyűjti azon elemek indexét,
amelyek ezt a maximumot elérik. A példában az eredmény [5, 8, 13]
, mert a számsor maximuma 84,
és ez a szám a lista 5, 8 és 13. indexű helyén szerepel.
Válaszd szét a programkódot részfeladatokra, függvényekre!
- Írj függvényt, amely paraméterként egy listát kap, és visszaadja annak maximumát!
- Írj függvényt, amely paraméterként egy listát kap, és egy keresett számot. Térjen vissza egy olyan listával, amely indexeket tartalmaz: azokat a helyeket, ahol a megadott szám a listában előfordul.
- Végül írj függvényt, amelyik az előző két függvény használatával megoldja a feladatot!
Lehessen ezt
indexek = legnagyobbak_indexei(szamok)
formában használni a fenti változóneveket használva.
Ügyelj arra, hogy lényegében új kódot nem kell írnod – ne is írj új kódot! A meglévő kód darabjait kell mozgatni, függvénybe kiszervezni.
Megoldás
def indexek(szamok, mi):
indexek = []
for i in range(0, len(szamok)):
if szamok[i] == mi:
indexek.append(i)
return indexek
def legnagyobbak_indexei(szamok):
return indexek(szamok, max(szamok))
def main():
szamok = [24, 31, 22, 43, 10, 84, 38, 44, 84, 56, 67, 51, 56, 84, 31, 65, 69, 83, 39]
indexek = legnagyobbak_indexei(szamok)
print(indexek)
main()