2020. október 14., szerda

Python mintafeladatok

Matematikai feladatok
http://szerver2.lacszki.sulinet.hu/tananyag/informatika/python.pdf

Kérjük be a konzolról egy henger sugarát és magasságát cm-ben, majd
- írjuk ki a henger térfogatát!
-A kiírásokban a számokat kerekítsük 2 tizedesre!
# -*- coding: ISO-8859-2 -*-
from math import *
rstr = raw_input("Sugár (cm)? ")
mstr = raw_input("Magasság (cm)? ")
r = float(rstr)
m = float(mstr)
terf = r * r * pi * m
vas = terf * 7.8
fa = terf * 0.7
print "Térfogat: ",round(terf,2)," cm3"

Ha beteszünk a bankba egy adott összeget, adott éves kamatszázalékra, adott hónapra,
mennyi pénzt vehetünk majd fel az idĘ lejártakor?
# -*- coding: ISO-8859-2 -*-
from math import *
osszegstr = raw_input("Összeg(Ft)? ")
honapstr = raw_input("Hónap? ")
kamatstr = raw_input("Kamat%? ")
osszeg = float(osszegstr)
honap = float(honapstr)
kamat = float(kamatstr)
ujosszeg = osszeg * pow(1+kamat/100,honap/12)
print honap," hónap múlva ",round(ujosszeg,0)," Ft-ot vehet ki."


Kérjük be a konzolról egy alkalmazott fizetését! Ha ez a fizetés 100 000 forintnál nem
nagyobb, akkor emeljük meg 25%-kal! Végül írjuk ki az alkalmazott fizetését!
# -*- coding: ISO-8859-2 -*-
fizstr = raw_input("Fizetés? ")
fiz = int(fizstr)
if (fiz < 100000) :
fiz = fiz * 1.25
print "Az új fizetés: ",fiz


Kérjünk be a konzolról egy valós számot! A szám akkor jó, ha 1000 és 2000 közötti páros
egész (a határokat is beleértve). Írjuk ki, hogy a szám jó, vagy nem jó!
# -*- coding: ISO-8859-2 -*-
szamstr = raw_input("Szám? ")
szam = int(szamstr)
if (szam >= 1000) and (szam <= 2000) and (szam % 2 == 0):
print "A szám jó."
else:
print "A szám nem jó."


Olvassunk be egy nem negatív egész számot, valakinek az életkorát! Kortól függĘen írjuk ki a
megfelelĘ szöveget:
 0 – 13 évig: Gyermek
14 – 17 évig: Fiatalkorú
18 – 23 évig: Ifjú
24 – 59 évig: FelnĘtt
60 évtĘl IdĘs
# -*- coding: ISO-8859-2 -*-
korstr = raw_input("Életkor? ")
kor = int(korstr)
if (kor <= 13):
print "Gyermek"
elif (kor <= 17):
print "Fiatalkorú"
elif (kor <= 23):
print "Ifjú"
elif (kor <= 59):
print "FelnĘtt"
else:
print "IdĘs"



Van egy kis megtakarított pénzem. Arra vagyok kíváncsi, hogy hány hónap múlva éri el ez az
összeg a bankban a 100 000 Ft-ot, ha havi 2%-os kamattal számolhatok?
# -*- coding: ISO-8859-2 -*-
penzstr = raw_input("AlaptĘke? ")
penz = float(penzstr)
honap = 0
while (penz < 100000):
penz = penz * 1.02
honap = honap + 1
print honap," hónap múlva felvehetsz ",penz," Ft-ot"
Feladat – Jegyek száma
Kérjünk be a konzolról egy számot! Írjuk ki a jegyeinek a számát!
# -*- coding: ISO-8859-2 -*-
szamstr = raw_input("Szám? ")
szam = int(szamstr)
seged = szam
jegySzam = 0
while (seged != 0):
seged = seged / 10
jegySzam = jegySzam + 1
print szam," jegyeinek száma: ",jegySzam


Két szám között határozzuk meg az elsĘ olyan számot, amelyik osztható egy megadott
számmal!
# -*- coding: ISO-8859-2 -*-
kezdstr = raw_input("Egyik szám? ")
vegstr = raw_input("Másik szám? ")
osztostr = raw_input("Osztó? ")
kezd = int(kezdstr)
veg = int(vegstr)
oszto = int(osztostr)
if (kezd > veg):
seged = kezd
kezd =veg
veg = seged
while (kezd % oszto != 0) and (kezd <= veg):
kezd = kezd + 1
if (kezd > veg):
print "Nem található ilyen szám"
else:
print "Az elsĘ ilyen szám: ",kezd


LéptetĘ ciklus - for
for i in range(5):
print i
Eredmény:
0
1
2
3
4
for i in range(3,5):
print i
Eredmény:
3
4
for i in range(3,15,4):
print i
Eredmény:
17
3
7
11
for i in range(20,-20,-6):
print i
Eredmény:
20
14
8
2
-4
-10
-16


Most 2020-at írunk. Írjuk ki, hogy mostantól 2026-ig melyik évben mennyi lesz József fizetése,
ha évenként 12%-kal növekszik! József jelenlegi fizetését a konzolról kérjük be!
# -*- coding: ISO-8859-2 -*-
fizstr = raw_input("Fizetés? ")
fiz = float(fizstr)
for i in range(2020,2027):
print i,"-ben a fizetés: ",round(fiz,0)
fiz = fiz * 1.12



rjuk ki megadott két évszám között az összes szökĘévet, majd a szökĘévek számát!
# -*- coding: ISO-8859-2 -*-
kezdstr = raw_input("Egyik évszám? ")
vegstr = raw_input("Másik évszám? ")
kezd = int(kezdstr)
veg = int(vegstr)
szokoevSzam = 0
if (kezd > veg):
seged = kezd
kezd =veg
veg = seged
for ev in range(kezd,veg+1):
if (ev % 400 == 0) or ((ev % 100 != 0) and (ev % 4 == 0)):
print ev
szokoevSzam = szokoevSzam + 1
print "A szökĘévek száma: ",szokoevSzam



A felhasználó adott sugarú körök kerületére kíváncsi. Amikor Ę beüt egy sugarat, mi kiírjuk a
kör kerületét. Ha már nem kíváncsi több eredményre, akkor a kör sugaránál nullát (végjelet)
kell ütnie!
# -*- coding: ISO-8859-2 -*-
from math import *
r = 10
while (r != 0):
r = float(raw_input("A kör sugara: "))
k = 2 * r * pi
if (r != 0):
print "A kör kerülete: ",k


Kérjünk be számokat a felhasználótól 0 végjelig. Írjuk ki a bevitt számok számát!
# -*- coding: ISO-8859-2 -*-
szam = 10
db = 0
while (szam != 0):
szam = float(raw_input("Szám: "))
if (szam != 0):
db = db + 1
print "Darabszám: ",db




Adott két szám között hány darab prímszám van? Írjuk is ki Ęket!
# -*- coding: ISO-8859-2 -*-
db = 0
kezdet = int(raw_input("Egyik szám? "))
veg = int(raw_input("Másik szám? "))
if (kezdet > veg):
seged = kezdet
kezdet = veg
veg = seged
for szam in range(kezdet,veg+1):
i=2
19
while (i <= szam/2) and (szam % i != 0):
i = i + 1
if (i > szam / 2):
print szam
db = db + 1
print "A prímek száma: ",db




Olvassuk be a számokat 0 végjelig, majd írjuk ki ezek összegét, darabszámát és átlagát!
# -*- coding: ISO-8859-2 -*-
db = 0
osszeg = 0.0
szam = 10.0
while (szam != 0):
szam = float(raw_input("Szám? "))
if (szam != 0):
osszeg = osszeg + szam
db = db + 1
if (db > 0):
print "A számok összege: ",osszeg
print "Darabszám: ",db
atlag = osszeg/db
print "Átlag: ",atlag
else:
print "Nincs beolvasott szám."



Kérjünk be a felhasználótól számlaösszegeket! A bevitel befejezĘdik, ha az összegnél nullát
ütnek. Írjuk ki a legnagyobb összegĦ számla sorszámát és összegét!
# -*- coding: ISO-8859-2 -*-
maxOsszeg = -1
szam = 0
osszeg = 10
db = 0
while (osszeg != 0):
osszeg = int(raw_input("Összeg? "))
20
db = db + 1
if (osszeg != 0) and (osszeg > maxOsszeg):
maxOsszeg = osszeg
szam = db
if (maxOsszeg > 0):
print "A maximális számla száma: ",szam
print "A maximális számla összege: ",maxOsszeg
else:
print "Nincs érvényes bevitel."




Készítsünk egy menüt! Három dologból lehet választani: egyik funkció, másik funkció és
kilépés. Jelenítsük meg a választási lehetĘségeket: <E>gyik / <M>ásik / <V>ége ?
Az Egyik, illetve a Másik funkció választására ismételten jelenjen meg egy-egy szöveg, a Vége
választására pedig legyen vége a programnak.
# -*- coding: ISO-8859-2 -*-
menu = "M"
while (menu != "V") and (menu != "v"):
menu = raw_input("<E>gyik / <M>ásik / <V>ége ? ")
if (menu == "E") or (menu == "e"):
print "Egyik funkció."
if (menu == "M") or (menu == "m"):
print "Másik funkció."





Kérjünk be számokat a konzolról 0 végjelig! Minden egyes számról állapítsuk meg, hogy az
hány jegyĦ! A program elején és végén, valamint az egyes eredmények kiírása után húzzunk
egy-egy 20 hosszúságú vonalat!.
# -*- coding: ISO-8859-2 -*-
def jegyekSzama(n):
db = 0
while (n != 0):
db = db + 1
n = n / 10
return db
def vonal():
s = ""
for i in range(20):
s = s+"-"
print s
vonal()
szam = 10
while (szam != 0):
szam = int(raw_input("Szám? "))
if (szam != 0):
jsz = jegyekSzama(szam)
print "A számjegyek száma: ",jsz
23
vonal()
vonal()





Kérjünk be számokat a konzolról 0 végjelig! Minden egyes számról állapítsuk meg, hogy az
hány jegyĦ! A program elején húzzunk egy 50 hosszú, @ karakterekbĘl álló vonalat! Az egyes
eredmények kiírása után húzzunk egy-egy 20 hosszúságú, - jelekbĘl álló vonalat!. A program
végén egy 50 hosszú * karakterekbĘl álló vonalat!
# -*- coding: ISO-8859-2 -*-
def jegyekSzama(n):
db = 0
while (n != 0):
db = db + 1
n = n / 10
return db
def vonal(mibol,mennyit):
s = ""
for i in range(mennyit):
s = s+mibol
print s
24
vonal("@",50)
szam = 10
while (szam != 0):
szam = int(raw_input("Szám? "))
if (szam != 0):
jsz = jegyekSzama(szam)
print "A számjegyek száma: ",jsz
vonal("-",20)
vonal("*",50)
Feladat – Háromszög
Írjunk olyan programot, amely egy háromszög három oldalából kiszámítja annak kerületét és
területét!
# -*- coding: ISO-8859-2 -*-
from math import *
def kerulet(a,b,c):
return a+b+c
def terulet(a,b,c):
s = kerulet(a,b,c)/2
return sqrt(s*(s-a)*(s-b)*(s-c))
x = float(raw_input("a: "))
y = float(raw_input("b: "))
z = float(raw_input("c: "))
print "Kerület: ",round(kerulet(x,y,z),2)
print "Terület: ",round(terulet(x,y,z),2)
Feladat – Faktoriális
Írjunk olyan programot, amely kiírja egy adott szám faktoriálisát!
# -*- coding: ISO-8859-2 -*-
def faktorialis(n):
f = 1
for i in range(1,n+1):
f = f * i
return f
szam = int(raw_input("Szám: "))
print szam,"! = ",faktorialis(szam)



Írjunk olyan programot, amely kiírja egy adott szám faktoriálisát! Alkalmazzunk rekurzív
algoritmust!
25
# -*- coding: ISO-8859-2 -*-
def faktorialis(n):
if (n == 0):
return 1
 else:
return n * faktorialis(n-1)
szam = int(raw_input("Szám: "))
print szam,"! = ",faktorialis(szam)



Írjunk olyan programot, amely kiírja a Fibonacci-sorozat elsĘ n elemét!
# -*- coding: ISO-8859-2 -*-
def fibonacci(n):
if (n == 1) or (n == 2):
return 1
else:
return fibonacci(n-1) + fibonacci(n-2)
szam = int(raw_input("Sorszám: "))
for i in range(1,szam+1):
print fibonacci(i)



Írjon egy programot, ami egy új változóba másol át egy karakterláncot úgy, hogy csillagot
szúr be a karakterek közé. Így például, « gaston »-ból « g*a*s*t*o*n » lesz.!
# -*- coding: ISO-8859-2 -*-
def csillagoz(szoveg):
uj = ""
for i in range(len(szoveg)-1):
uj = uj + szoveg[i] + "*"
uj = uj + szoveg[len(szoveg)-1]
return uj
x = raw_input("Szöveg? ")
print csillagoz(x)



Írjon egy programot, ami egy új változóba fordított sorrendben másolja át egy karakterlánc
karaktereit. Így például « zorglub » -ból « bulgroz » lesz.!
29
# -*- coding: ISO-8859-2 -*-
def fordit(szoveg):
uj = ""
for i in range(len(szoveg)-1,-1,-1):
uj = uj + szoveg[i]
return uj
x = raw_input("Szöveg? ")
print fordit(x)



Írjon egy programot, ami pozitív egész számokat kér be 0 végjelig, majd szétválogatja Ęket
egy-egy listába, aszerint, hogy párosak, vagy páratlanok!
# -*- coding: ISO-8859-2 -*-
szam = 10
paros = []
paratlan = []
while (szam != 0):
szam = int(raw_input("Szám? "))
if (szam != 0):
if (szam % 2 == 0):
paros.append(szam)
else:
paratlan.append(szam)
print "Párosak: ",paros
print "Páratlanok: ",paratlan



Írjon egy programot, ami egy adott listáról másolatot készít!
# -*- coding: ISO-8859-2 -*-
lista1 =
['január','február','március','április','május','június','július','augusztus','szeptember','október','nov
ember','december']
lista2 = []
for i in range(len(lista1)):
lista2.append(lista1[i])
print lista2



Írjon egy programot, ami 20 dobást szimulál egy dobókocka esetén! Írja ki a dobások
eredményét, majd a dobások átlagát!
# -*- coding: ISO-8859-2 -*-
from random import *
kocka=[0]*20
osszeg = 0.0
for i in range(20):
kocka[i]=randrange(1,7)
osszeg = osszeg + kocka[i]
print kocka
atlag = osszeg / 20
print "Átlag: ",atlag



Adott egy zöldségraktár, melyben pillanatnyilag egyetlen árut, paradicsomot raktározunk.
A raktárba gyakran teszünk be, illetve veszünk ki onnan paradicsomot.
A paradicsom pillanatnyi egységára 300 Ft, de ez változhat
Készítsünk olyan programot, amely segítségével rögzíteni tudjuk a megfelelĘ adatokat, és
bármikor jelentést tudunk adni a paradicsom aktuális mennyiségérĘl, egységáráról, értékérĘl!
MenübĘl lehessen kiválasztani, hogy beteszünk-e, vagy kiveszünk paradicsomot, elletve, hogy
emeljük, avagy csökkentjük a paradicsom egységárát! Minden mĦvelet során adjunk jelentést!
# -*- coding: ISO-8859-2 -*-
class Aru:
def __init__(self,aruNev,aruEgysegar):
self.nev = aruNev
self.egysegar = aruEgysegar
self.menny = 0
41
def setEgysegar(self,aruEgysegar):
if (aruEgysegar >= 0):
self.egysegar = aruEgysegar
def getAr(self):
return self.menny * self.egysegar
def hozzatesz(self,aruMenny):
if (aruMenny > 0):
self.menny = self.menny + aruMenny
def elvesz(self,aruMenny):
if (aruMenny > 0) and (aruMenny <= self.menny):
self.menny = self.menny - aruMenny
def __doc__(self):
print self.nev," Egységár: ",self.egysegar," Mennyiség: ",self.menny," Ár: ",self.getAr()
aru = Aru("Paradicsom",300)
m = 'A'
while not((m == 'v') or (m == 'V')):
print "B: Paradicsom berakása a raktárba"
print "K: Paradicsom kivétele a raktárból"
print "E: Egységár módosítása"
print "V: Vége"
m = raw_input("Választás? ")
if (m == 'B') or (m == 'b'):
x = int(raw_input("Mennyit tesz a raktárba? "))
aru.hozzatesz(x)
aru.__doc__()
elif (m == 'K') or (m == 'k'):
x = int(raw_input("Mennyit vesz ki a raktárból? "))
aru.elvesz(x)
aru.__doc__()
elif (m == 'E') or (m == 'e'):
x = int(raw_input("Mennyi az új egységár? "))
aru.setEgysegar(x)
aru.__doc__()
Feladat – Másodfokú egyenlet
Írjunk olyan programot, amely kiszámítja egy másodfokú egyenlet gyökeit annak
együtthatóiból!
# -*- coding: ISO-8859-2 -*-
from math import *
class MasodfokuEgyenlet:
42
def __init__(self,szam1,szam2,szam3):
self.a = szam1
self.b = szam2
self.c = szam3
def diszkriminans(self):
return self.b * self.b - 4 * self.a * self.c
def megoldas1(self):
return (-self.b + sqrt(self.diszkriminans())) / (2 * self.a)
def megoldas2(self):
return (-self.b - sqrt(self.diszkriminans())) / (2 * self.a)
def __doc__(self):
if (self.a == 0):
print "Az egyenlet nem másodfokú."
elif (self.diszkriminans() < 0):
print "Az egyenletnek nincs valós megoldása."
else:
print "Az egyenlet egyik megoldása: ",self.megoldas1()
print "Az egyenlet másik megoldása: ",self.megoldas2()
m = 'A'
while not((m == 'v') or (m == 'V')):
print "E: A másodfokú egyenlet együtthatóinak bevitele"
print "V: Vége"
m = raw_input("Választás? ")
if (m == 'E') or (m == 'e'):
a = float(raw_input("a? "))
b = float(raw_input("b? "))
c = float(raw_input("c? "))
egyenlet = MasodfokuEgyenlet(a,b,c)
egyenlet.__doc__()



rjunk olyan programot, amely kiszámítja a négyzet, a téglalap és a kör kerületét, területét! Az
egyes síkidomok osztályok legyenek, megfelelĘ metódusokkal, alkalmazzuk az öröklĘdést!
# -*- coding: ISO-8859-2 -*-
43
from math import *
class Teglalap:
def __init__(self,szam1,szam2):
self.a = szam1
self.b = szam2
def kerulet(self):
return 2*(self.a + self.b)
def terulet(self):
return self.a * self.b
def __doc__(self):
print "Kerület: ",self.kerulet()
print "Terület: ",self.terulet()
class Negyzet(Teglalap):
def __init__(self,szam1):
Teglalap.__init__(self,szam1,szam1)
def __doc__(self):
Teglalap.__doc__(self)
class Kor(Negyzet):
def kerulet(self):
return 2 * self.a * pi
def terulet(self):
return self.a * self.a * pi
def __doc__(self):
Negyzet.__doc__(self)
m = 'A'
while not((m == 'v') or (m == 'V')):
print "T: Téglalap"
print "N: Négyzet"
print "K: Kör"
print "V: Vége"
 m = raw_input("Választás? ")
if (m == 't') or (m == 'T'):
a = float(raw_input("a? "))
b = float(raw_input("b? "))
teglalap = Teglalap(a,b)
44
teglalap.__doc__()
if (m == 'n') or (m == 'N'):
a = float(raw_input("a? "))
negyzet = Negyzet(a)
negyzet.__doc__()
if (m == 'k') or (m == 'K'):
r = float(raw_input("r? "))
kor = Kor(r)
kor.__doc__()

Grafikai feladatok
http://szerver2.lacszki.sulinet.hu/tananyag/informatika/tkinter.pdf

Készítsük el az itt látható ablakot!


from Tkinter import *
ablak1 = Tk()
cimke1 = Label(ablak1, text='Döntsd el:', fg='red')
cimke1.pack()
gomb1 = Button(ablak1, text='OK')
gomb1.pack()
gomb2 = Button(ablak1, text='Nem OK')
gomb2.pack()
gomb3 = Button(ablak1, text='Kilépés', command = ablak1.destroy)
gomb3.pack()
ablak1.mainloop()



Készítsük el az itt látható ablakot! Az ablak négy alapmĦveletes számológépként mĦködjön!



# -*- coding: ISO-8859-2 -*-
from Tkinter import *
def osszead():
x = eval(mezo1.get())
y = eval(mezo2.get())
z = x + y
mezo3.delete(0,END)
mezo3.insert(0,'Eredmény: '+str(z))
def kivon():
x = eval(mezo1.get())
y = eval(mezo2.get())
z = x - y
mezo3.delete(0,END)
mezo3.insert(0,'Eredmény: '+str(z))
8
def szoroz():
x = eval(mezo1.get())
y = eval(mezo2.get())
z = x * y
mezo3.delete(0,END)
mezo3.insert(0,'Eredmény: '+str(z))
def oszt():
x = eval(mezo1.get())
y = eval(mezo2.get())
z = x / y
mezo3.delete(0,END)
mezo3.insert(0,'Eredmény: '+str(z))
ablak1 = Tk()
mezo1 = Entry(ablak1)
mezo1.pack()
mezo2 = Entry(ablak1)
mezo2.pack()
gomb1 = Button(ablak1, text='Összeadás', command=osszead)
gomb1.pack()
gomb2 = Button(ablak1, text='Kivonás', command=kivon)
gomb2.pack()
gomb3 = Button(ablak1, text='Szorzás', command=szoroz)
gomb3.pack()
gomb4 = Button(ablak1, text='Osztás', command=oszt)
gomb4.pack()
mezo3 = Entry(ablak1)
mezo3.pack()
gomb5 = Button(ablak1, text='Kilépés', command = ablak1.destroy)
gomb5.pack()
ablak1.mainloop()


Készítsük el az itt látható ablakot!

# -*- coding: ISO-8859-2 -*-
from Tkinter import *
abl1 = Tk()
txt1 = Label(abl1, text = 'ElsĘ mezĘ :')
txt2 = Label(abl1, text = 'Második :')
mezo1 = Entry(abl1)
mezo2 = Entry(abl1)
txt1.pack(side =LEFT)
txt2.pack(side =LEFT)
mezo1.pack(side =LEFT)
mezo2.pack(side =LEFT)
abl1.mainloop()


Készítsük el az itt látható ablakot!


# -*- coding: ISO-8859-2 -*-
from Tkinter import *
abl1 = Tk()
txt1 = Label(abl1, text = 'ElsĘ mezĘ :')
txt2 = Label(abl1, text = 'Második :')
mezo1 = Entry(abl1)
mezo2 = Entry(abl1)
txt1.grid(row =0)
txt2.grid(row =1)
mezo1.grid(row =0, column =1)
mezo2.grid(row =1, column =1)
abl1.mainloop()


ÜZENET WIDGET

Készítsünk a message widget segítségével olyan ablakot, amely a szerző legfontosabb adatait
tartalmazza több sorban!

# -*- coding: ISO-8859-2 -*-
from Tkinter import *
abl1 = Tk()
# a widgetek létrehozása:
uz1 = Message(abl1, text='Készítette: Gipsz Jakab\nPiripócs\n2009.06.04', width=300)
gomb1 = Button(abl1, text='Kilép', command=abl1.destroy)
# laptördelés a'pack' metódus segítségével :
uz1.pack()
gomb1.pack()
# indítás :
abl1.mainloop()

TÖBBABLAKOS

Készítsünk olyan ablakot, amelynek egy nyomógombjára kattintva egy másik ablak nyílik
meg!
# -*- coding: ISO-8859-2 -*-
from Tkinter import *
abl1 = Tk()
def ujablak():
abl2 = Toplevel(abl1)
uz2 = Message(abl2, text='Készítette: Gipsz Jakab\nPiripócs\n2009.06.04', width=300)
gomb2 = Button(abl2, text='Kilép', command=abl2.destroy)
uz2.pack()
gomb2.pack()
abl2.mainloop()
# a widgetek létrehozása
szoveg1 = Label(abl1, text ='Kattints a gombra!')
gomb1 = Button(abl1, text ='Névjegy', command=ujablak)
# laptördelés a'pack' metódus segítségével :
szoveg1.pack()
gomb1.pack()
# indítás :
abl1.mainloop()


Nincsenek megjegyzések:

Megjegyzés küldése