Informatika2-2015/Gyakorlat02

A MathWikiből
(Változatok közti eltérés)
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:

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:

  1. kiertekel
  2. kozel
  3. 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
Személyes eszközök