Programozáskor felmerülő problémák nagy része visszavezethető néhány alapproblémára, és ezekre létezik megoldási sablon. Az ilyen, egy-egy feladattípus megoldását nyújtó algoritmusokat nevezzük programozási tételnek. Most csak a Pythonban használt egyszerűsítéseket tárgyaljuk, az alacsonyabb szintű programozási nyelvek ennél hosszabb kóddal oldják meg a programot.

 

Összegzés

Az összegzés általánosan nem egyéb, mint egy sorozat (lista) elemeinek összeadása vagy összeszorzása.

eredmeny = kezdőérték
ciklus a sorozat minden elem-ére
    eredmeny megváltoztatása elem-mel
ciklus vége

Az eredmény kezdőértékének megválasztására figyelni kell: összegnél 0, szorzatnál 1, betűk egymás után írásakor üres string, pl. uj_szoveg = ’’

Pythonban egy számlista elemeit így adjuk össze: sum(lista)

Átlagszámításkor működik a sum(lista)/len(lista) páros, például két számjegyre kerekítve az átlagot:
print(round(sum(számlista)/len(számlista),2))

 

Eldöntés

Az eldöntés általánosan ezt jelenti: eldöntjük, hogy egy adott gyűjteményes adatszerkezetben (például listában vagy stringben) van-e adott tulajdonságú elem. Ilyenkor használható az if keresett_elem in adatszerkezet utasításforma is, például

if ’oroszlán’ in allatok_listaja:

Az in egy operátor. Azt vizsgálja, hogy benne van-e egy elem például egy listában. Van ilyen alakja is:

if keresett_elem not in adatszerkezet:

 

Kiválasztás

Az eldöntés tételében azt vizsgáltuk, hogy van-e adott tulajdonságú elem a listánkban. Most abból indulunk ki, hogy van ilyen tulajdonságú elem és azt is meg kell határozni, hogy melyik az. Erre a kérdésre válaszol a kiválasztás tétele.

Ha konkrétan az elem indexére vagyunk kíváncsiak, akkor használhatjuk a lista típus index() függvényét. Ha például van egy allatok listánk és arra vagyunk kíváncsiak, hogy hányadik elem a hernyó, akkor így keresünk rá (+1 azért kell, mert az index 0-tól indul):

hanyadik = allatok.index(’hernyó’)+1

 

Maximum kiválasztás

  • maximum kiválasztáshoz egyszerű esetekben használhatod a max() függvényt
  • minimum kiválasztáshoz egyszerű esetekben használhatod a min() függvényt

Pl. print(max(fizetesek),min(fizetesek))

 

Megszámolás

Hány elem felel meg a listából egy adott tulajdonságnak.

A Pythonban működik a lista típus count() függvénye, ha egy elem számát kérdezzük, pl.

[‘alma’, ‘körte’, ‘alma’, ‘alma’].count(‘alma’)  eredménye 3,

általános formája: listanév.count(keresett_elem)

Általában arról szól, hogy

  • definiálunk egy számlálót (egy változót), amiben számon tartjuk, hogy eddig hány, a keresett tulajdonsággal bíró elemet találtunk (a számláló kezdeti értéke nulla);
  • végigjárjuk a bejárható objektum összes értékét, és ha egy elem adott tulajdonságú, akkor növeljük a számlálót.

Pythonban, indexek szerint bejárva a bejárható objektumunkat (ez kell, ha a szomszédos elemekhez akarjuk hasonlítgatni az adott elemet):

számláló = 0
for index in range(len(bejárható_objektum)):
    if bejárható_objektum[index] olyan_amilyet_keresünk:
        számláló += 1

De ez is működik:

számláló = 0
for elem in bejárható_objektum:
    if elem olyan_amilyet_keresünk:
        számláló += 1

 

Keresés

Általánosan a keresés megmondja, hogy egy listában melyik az adott tulajdonságú elem. Ha nincs benne, akkor megmondja, hogy nincs. Pl. ha egy számokból álló lista esetében arra vagyunk kíváncsiak, hogy milyen indexű elemek nagyobbak 10-nél:

indexek = [i1 for i1 in range(len(lista)) if lista[i1]>10]
if not indexek:
    print(’Nem volt ilyen elem’)
else:
    str_indexek = [str(elem) for elem in indexek]
    print(’A megfelelő indexek:’,’, ’.join(str_indexek))

Ha egy adott elem indexét keressük, működik a lista.index(elem) is, ami az elem első előfordulásának indexét adja vissza.

Az in operátorral meg tudjuk mondani, hogy van‑e keresett érték a listában:

if érték in lista: …

Pythonban egy lista adott tulajdonságú elemeinek az indexeit kigyűjthetjük egy külön listába:

indexek = [i1 for i1 in range(len(lista)) if lista[i1] adott tulajdonságú]

 

Kiválogatás

A kiválogatás olyan másolás, ahol a második listába csak bizonyos feltételnek megfelelő elemeket másolunk át.

Ha adott egy lista, a Pythonban egyszerűen kigyűjthetjük egy másik listába az adott tulajdonságú elemeket, pl.
eredmeny = [szam for szam in szamok if szam>10] a 10-nél nagyobb számokat gyűjti ki az eredmeny listába.

 

Rendezés

Ha csak számokból áll a lista: lista.sort() növekvőbe rendezi, lista.sort(reverse=True) csökkenőbe.

Több dimenziós tömbök rendezése pl. lista.sort(key = lambda e:e[1])

Általánosan arról szól, hogy miként rendezhető egy lista, azaz miként lehet a 2, 3, 1, 4-ből 1, 2, 3, 4-et csinálni.

A sorted() függvény és a list.sort() tagfüggvény:

  • a rendezendő lista a sorted() függvénynél, a sort() esetében nyilván a list-et rendezzük, például sorted(autok) vagy autok.sort()
  • ha fordítva akarunk rendezni: reverse=True
  • ha nem úgy akarunk rendezni, ahogy a józan ész diktálja: kulcsfüggvény.

A két sort-függvény lényegében ugyanaz, és mindkettő nagyon gyors, a kulcsfüggvény pedig nagyon hasznos dolog. Megjegyzés: ide kapcsolódnának a lambdafüggvények, íme egy példa.

Adott a következő lista (ki melyik napon született):

lista = [[’Hapci’,12],[’Morgó’,16],[’Tudor’,2],[’Vidor’,20]]

Ha a nap (vagyis az 1-es indexű elemek) szerint akarjuk rendezni a tömböt, a következőt csináljuk:

lista.sort(key=lambda e:e[1])

 

Részletesebben a programozási tételekről: http://szit.hu/doku.php?id=oktatas:programozas:programozasi_tetelek:mondatszeru_leiras

News Reporter