Informatika2-2015/Gyakorlat02
53. sor: | 53. sor: | ||
Részletes leírás a [[Informatika2-2015#H.C3.A1zi_feladatok_.C3.A9s_labor_feladatok|tárgylapon]]. | Részletes leírás a [[Informatika2-2015#H.C3.A1zi_feladatok_.C3.A9s_labor_feladatok|tárgylapon]]. | ||
+ | |||
+ | == Házi Feladat == | ||
+ | |||
+ | A '''pasziansz''' feladathoz az eredeti kód itt van, ha valaki véletlenül eltüntette volna a rendszerben: | ||
+ | |||
+ | <python># 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</python> |
A lap 2015. február 16., 13:27-kori változata
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