Informatika2-2015/Gyakorlat02
Tartalomjegyzék |
2. gyakorlat - Függvényhívás, hibajavítás
Ezen a gyakorlaton is még főleg az előző féléves Informatika 1 anyagát ismételjük, az ott tanultakat kell használni. Amire biztosan szükség lesz ma:
- Python alapjai, futtatása; karakterláncok; elágazások, ciklusok; függvények definiálása: Informatika1-2014/eloadas3
- Listák, szótárak: Informatika1-2014/eloadas4
Ha valaki nem hallgatta ezt a tárgyat, és nincs tisztában a python alapjaival, nyugodtan kérdezzen laboron, és igyekezzen egy-két héten belül behozni a lemaradást.
Feladatok
Feladatok a CloudCoder-en megtalálhatóak. Ajánlott sorrend:
- kiertekel
- kozel
- vananagram
A vananagram feladathoz az eredeti kód itt van, ha valaki véletlenül eltüntette volna a rendszerben:
# Ez a függvény megszámolja egy szóban hogy melyik # betü hányszor szerepel, és egy szótárban visszaadja def betuszamolo(szo): szamolo = {} for betu in szo: # Ha már volt ilyen betü, növeljük a számát if betu in szamolo: szamolo[betu] += 1 # Ha még nem volt ilyen betü, most már egyszer volt else: szamolo[betu] = 1 return szamolo # Ez a függvény megmondja hogy a szavak listájában van-e # anagramma pár def vananagram(l): # Ez a két for ciklus végigmegy minden i, j páron # hogy i < j < len(l) for i in range(len(l)): for j in range(i+1, len(l)): # Megszámoljuk mindkettöben a betüket, és # összehasonlítjuk a kettöt i_szamolo = betuszamolo(l[i]) j_szamolo = betuszamolo(l[i]) if i_szamolo == j_szamolo: return True # Ha nem volt anagramma, False-al térünk vissza return False
CloudCoder használata
A legtöbb python feladathoz gyakorlaton egy CloudCodernek nevezett rendszert fogunk használni. Ennek elõnye, hogy helyben ki is javítja a feladatot. Elérés:
Részletes leírás a tárgylapon.
Házi Feladat
A pasziansz feladathoz az eredeti kód itt van, ha valaki véletlenül eltüntette volna a rendszerben:
# Megmondja egy kártyáról hogy fekete-e def fekete(kartya): szam, szin = kartya fekete_szinek = ["pikk", "treff"] if szin in fekete_szinek: return True else: return False # Ez a függvény megmondja a legjobb kirakható # sor értékét. def pasziansz(kez): # Ha egy kártyánk sincs, 0 pont a max. if len(kez) == 0: return 0 # Csökkenö sorrendbe tesszük a kártyákat. kez.sort(reverse=True) # Az első kártya a legértékesebb. elozo = kez[0] pont = elozo[0] del kez[0] # Mindig megkeressük a legértékesebb lapot, # ami lehet a következö, mert más szinü. # Ezt addig csináljuk amig találunk ilyent talalt = True while talalt: talalt = False # Csökkenő sorrendben végigmegyünk a kártyákon for i in range(len(kez)): lap = kez[i] # Ha a kártya különbözö szinü, betesszük, # és kitöröljük a kártyák listájáról if fekete(elozo) != fekete(lap): talalt = True elozo = lap pont += lap[0] del kez[i] break return pont