Informatika2-2015/Gyakorlat02

A MathWikiből
A lap korábbi változatát látod, amilyen Csirke (vitalap | szerkesztései) 2015. február 16., 13:27-kor történt szerkesztése után volt.

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