A ciklus egy egyszerű fogalom: valami, amit újra és újra végrehajtatunk.
A ciklusoknak sok fajtája van. Nézzük elsőnek a számláló ciklust, amit akkor használunk, ha a valamit megadott számú alkalommal szeretnénk futtatni
Tegyük fel, hogy szeretnénk kiírni a "Hello világ!"-ot egy helyett ötször. Pythonban ennek a legegyszerűbb módja:
Egyszerű forciklusra példa;
Egymás alá írja ötször!
for i in range(1,6):
print("Hello világ!")
Amint látjuk a range a ciklus kezdő és végső értéket jelöli.
A harmadik érték a lépést jelenti, 2,4,6,8
list(range(0,10,2))
A lépés lehet visszafelé is 8,6,4,2
list(range(10,0,-2))
Ha feltételhez kötöm akkor if utasitást használok
for i in range(1, 6) :
if i == 3 :
print("Hello, world! i =", i)
A ciklus addig fut amíg 3 nem lesz és akkor végrehajtja a kiírást
az egyszeres egyenlőségjellel a változók értékét állíthatjuk be
ha két értéket (az előző esetben az i-t és a 3-at) szeretnénk összehasonlítani, akkor ==-t kell használnunk
if i == 3 :
print("Az i erteke harom !")
elif i == 4 :
print("most negy!")
else :
print("Hello vilag! i =", i)
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
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."
Í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)
Í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)
Írjunk olyan programot, amely egy stringben megszámolja az e betĦket!
# -*- coding: ISO-8859-2 -*-
def ebetukSzama(szoveg):
db = 0
for i in range(len(szoveg)):
if (szoveg[i] == 'e') or (szoveg[i] == 'E'):
db = db + 1
return db
x = raw_input("Szöveg? ")
print "Az e betĦk száma: ",ebetukSzama(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 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
Í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__()
Javasolt könyv a tanuláshoz;
http://szerver2.lacszki.sulinet.hu/tananyag/informatika/python.pdf
http://szerver2.lacszki.sulinet.hu/?q=node/98
http://szerver2.lacszki.sulinet.hu/?q=node/121
A ciklusoknak sok fajtája van. Nézzük elsőnek a számláló ciklust, amit akkor használunk, ha a valamit megadott számú alkalommal szeretnénk futtatni
Tegyük fel, hogy szeretnénk kiírni a "Hello világ!"-ot egy helyett ötször. Pythonban ennek a legegyszerűbb módja:
Egyszerű forciklusra példa;
Egymás alá írja ötször!
for i in range(1,6):
print("Hello világ!")
Amint látjuk a range a ciklus kezdő és végső értéket jelöli.
A harmadik érték a lépést jelenti, 2,4,6,8
list(range(0,10,2))
A lépés lehet visszafelé is 8,6,4,2
list(range(10,0,-2))
Ha feltételhez kötöm akkor if utasitást használok
for i in range(1, 6) :
if i == 3 :
print("Hello, world! i =", i)
A ciklus addig fut amíg 3 nem lesz és akkor végrehajtja a kiírást
az egyszeres egyenlőségjellel a változók értékét állíthatjuk be
ha két értéket (az előző esetben az i-t és a 3-at) szeretnénk összehasonlítani, akkor ==-t kell használnunk
Adat bekérés
megkérdezzük a nevedet és azt beépítjük a következő képpen
name=input("Mi a neved?")
print("Helló, ", name)
Megadhatunk több feltételt is az "elif" illetve "else" segítségével.
for i in range(1, 6) :if i == 3 :
print("Az i erteke harom !")
elif i == 4 :
print("most negy!")
else :
print("Hello vilag! i =", i)
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
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."
Í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)
Í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)
Írjunk olyan programot, amely egy stringben megszámolja az e betĦket!
# -*- coding: ISO-8859-2 -*-
def ebetukSzama(szoveg):
db = 0
for i in range(len(szoveg)):
if (szoveg[i] == 'e') or (szoveg[i] == 'E'):
db = db + 1
return db
x = raw_input("Szöveg? ")
print "Az e betĦk száma: ",ebetukSzama(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 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
Í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__()
Javasolt könyv a tanuláshoz;
http://szerver2.lacszki.sulinet.hu/tananyag/informatika/python.pdf
http://szerver2.lacszki.sulinet.hu/?q=node/98
http://szerver2.lacszki.sulinet.hu/?q=node/121
Nincsenek megjegyzések:
Megjegyzés küldése