A programozási tételek ‘alap’ algoritmusok, amiket programozás során használunk.
Egyszerű, hétköznapi dolgok, mint pl. elemek összegének kiszámítása, maximum vagy minimum érték keresése…
Összegzés
Egy lista elemeinek összegét tudjuk vele kiszámolni. Végig kell menni a lista elemein és mindet összeadni. összeg=összeg+aktuális elem
A példában az osszeg változóban tárolom az aktuális összeget. A lista bejárásához a for ciklust használom.
A Python nyelvben az összegzésre van külön függvény, a Sum()
osszeg=0
lista = [2,10,6,3,4,8,7,1,5,12]
for x in lista:
osszeg += x
print("A számok összege: ",osszeg)
#röviden:
print("A számok összege: ", sum(lista))
Megszámlálás
A megszámlálás megszámolja például, hány elemből áll egy lista, vagy hány elem felel meg bizoyos feltételnek. A következő példában megszámoljuk hány elemből áll a listánk, illetve hány darab páros számot tartalmaz. A páros számhoz a kettővel történő maradékos osztást használom, nyilván ha a maradék 0 akkor páros a szám.
A Python erre is kínál beépített függvényt. A lista hossz lekérdezhető a len() függvénnyel. Ha megszámlálás, akkor a sum() függvényt is felhasználhatjuk, illetve a count() -ot is.
Páros számok megszámolása: paros = sum(x % 2 == 0 for x in lista)
Hányszor szerepel a 4 a listában? negy =lista.count(4)
lista = [2,10,6,33,4,9,8,47,1,5,12,-12,4,-6]
szamlalo = 0
paros_db = 0
for x in lista:
szamlalo += 1
if x % 2 == 0:
paros_db += 1
print("Lista elemszáma: ",szamlalo)
űprint("Páros számok száma: ",paros_db)
print("Hányszor szerepel a négyes szám? ",lista.count(4))
paratlan = sum(x % 2 != 0 for x in lista)
print("Páratlan számok száma: ",paratlan)
Eldöntés
Eldöntésnél igaz vagy hamis értéket várunk. Pl: Van-e a listában pozitív szám? Eldöntésnél nem megyünk végig az összes listaelemen, csak a legelsőig, ami teljesíti a feltételt. A lista bejárásához lehet használni for és while ciklust is. Az általános szabály az, hogy a for ciklust érdemes használni, ha ismerjük az iterálások számát, míg a while ciklust érdemes használni, ha nem tudjuk, hogy pontosan hány iterációra van szükség. Ez például a Kráta dkt-ban rosszul van megfogalmazva!
A feladat: határozd meg, van-e negatív szám a listában! A for cilust a brak utasítással szakítjuk meg, amint az első negatív elemhez ér! Természetesen ezt is lehet egyszerűbben, pl. a Python any függvényét felhasználva.
lista = [2,10,-1,6,3,4,8,7,1,5,12]
van_negativ = False
for x in lista:
# print(x)
if x < 0:
vannegativ = True
break
if van_negativ:
print("Van negatív szám!")
else:
print("Nincs negatív szám")
#röviden
if any(x < 0 for x in lista):
print("Van negatív szám!")
else:
print("Nincs negatív szám")
Szélsőérték keresés
A legkisebb vagy legnagyobb elem megkeresése. Felvesszük a változónak a kezdőértéket, aminél biztos lesz nagyobb/kisebb. Ez lehet a lista első eleme.
Legkisebb szám kiválasztása: min() függvény
Legnagyobb szám kiválasztása: max() függvény
lista = [12, 55, 44, 18, 49, 111,-11, -10, 1, 12, 6]
minimum= lista[0]
maximum = lista[0]
for szam in lista:
if szam < min:
minimum= szam
if szam > maximum:
maximum = szam
print('A legkisebb szám a listában: ', min)
print('A legnagyobb szám a listában: ', maximum)
#röviden:
lista = [12, 55, 44, 18, 49, 111, -11, -10, 1, 12, 6]
minimum = min(lista)
maximum = max(lista)
print('A legkisebb szám a listában: ', minimum)
print('A legnagyobb szám a listában: ', maximum)
Keresés
Keresés során feltételezzük, hogy a listában van olyan elem, amit keresünk. Ennek az elemnek az indexét keressük a következő példában. Hanyadik elem a piros szín?
lista = ['kék', 'zöld', 'piros', 'fehér']
talalat = False
index = 0
while index < len(lista) and not talalat:
if lista[index] == 'piros':
talalat = True
index = index + 1
if talalat:
print('Van a listában piros szín, az indexe: ', index-1)
else:
print('Nincs a listában piros szín.')
Kiválogatás (kiválasztás)
Kiválogatás során egy vagy több feltétel szerint elemeket pl. egy másik listába másoljuk.
Hozz létre egy listát, ezekkel az elemekkel: 2, 10, 6, 3, 4, 8, 7, 1, 5, 12
Válogasd ki 1-1 listába a páros és páratlan elemeket!
lista = [2, 10, 6, 3, 4, 8, 7, 1, 5, 12]
paros = []
paratlan = []
for elem in lista:
if elem % 2 == 0:
paros.append(elem)
else:
paratlan.append(elem)
print('Páros számok a listában:', paros)
print('Páratlan számok a listában:', paratlan)
Gyakorlás
Feladat 1:
Az elmúlt egy héten minden reggel 7-kor megmértük a hőmérsékletet az udvaron. Készíts listát az adatokból, határozd meg hány fagyos reggelünk volt?
hétfő: 6 ,kedd:-3,szerda: 2, csütörtök:-9, péntek:-7
homerseklet = [ ['hétfő',6],['kedd',-3],['szerda',2],['csütörtök',-9],['péntek',-7]]
fagyos_napok_szama = 0
for i in homerseklet:
if i[1] < 0:
fagyos_napok_szama += 1
print('Fagyos napok száma: ',fagyos_napok_szama)
#Röviden:
db= sum(i[1] < 0 for i in homerseklet)
print('Fagyos napok száma: ', db)
Feladat 2.:
Hány darab szó van ebben a szövegben? ‘egy kettő három négy öt hat’ Mennyi a betű?
szoveg = ' egy kettő három négy öt hat'
szavak = 0
#figyelni kell, hogy szóköz után másik szóköz van-e?
for i in range(len(szoveg)-1):
if szoveg[i] == ' ' and szoveg[i+1] != ' ':
szavak += 1
print('A szavak száma: ',szavak)
#Hányszor szerepel benne az a betű?
print("Ennyiszer szerepel az a betű: ",szoveg.count('a'))
Feladat 3.:
Hozz létre egy 10 elemű listát, és töltsd fel -20 és 20 közötti számokkal! Számold ki a számok összegét, átlagát, keresd meg a minimum és maximum értékeket is!
import random
i = 0
szamok = []
osszeguk = 0
for i in range (10):
x = random.randint(-20, 20)
szamok.append(x)
osszeguk += x
print('A véletlenszerűen generált számok:')
print('Számok: ', szamok,'Összegük: ',osszeguk)
# röviden: itt mindenképpen kell a for ciklus, csak az osszeguk += x sort lehet megspórolni
print("A számok összege: ", sum(szamok))
print("A számok átlaga :, sum(szamok)/len(szamok))
print("Minimum: ",min(szamok))
print("Maximum: ",max(szamok))
Feladat 4.:
Készíts egy listát, ami 20 db -50 és 50 közötti elemet tartalmaz! Válogasd ki belőle 1-1 listába a pozitív és a negatív számokat!
import random
szamok_lista = []
pozitiv_szamok = []
negativ_szamok = []
for i in range(20):
szam = random.randint(-50, 50)
szamok_lista.append(szam)
if szam > 0:
pozitiv_szamok.append(szam)
else:
negativ_szamok.append(szam)
print("A sorsolt számok:", szamok_lista)
print("Pozitív számok:", pozitiv_szamok)
print("Negatív számok:", negativ_szamok)
Feladat 5.:
Válogasd ki a pozitív és negatív hőmérsékleteket külön listákba!
homerseklet = [ ['hétfő',6],['kedd',-3],['szerda',2],['csütörtök',3],['péntek',-1]]
negativ_napok = []
pozitiv_napok = []
for i in homerseklet:
if i[1] < 0:
negativ_napok.append(i)
else:
pozitiv_napok.append(i)
print("Negatív hőmérsékletű napok: ", negativ_napok)
print("Pozitív hőmérsékletű napok: ", pozitiv_napok)
Feladat 6.: Generálj egy 10 elemű listát magyar rendszámokkal, és sebesség adatokkal! Válogasd ki belőle a gyorshajtókat! (városi sebességhatár)
gyorshajtok = []
autok = []
for i in range(10):
rendszam = ''.join(random.choices('ABCDEFGHIJKLMNOPRSTUVWXYZ',k=3))
rendszam += str(random.randint(1,999)).zfill(3)
sebesseg = random.randint(40,150)
autok.append([rendszam,sebesseg])
for i in autok:
if i[1] > 50:
gyorshajtok.append(i)
print(autok)
print("Gyorshajtók: ",gyorshajtok)