Hirdetés

Új hozzászólás Aktív témák

  • XP NINJA
    őstag

    Így első blikkre azért nem működött a második feladatod a függvényes módszerrel, mert nem is hívtad meg. A végén feladat_2 helyett feladat_2()-t kellett volna írni.

    Szerintem egyébként mindkét megoldás lehet jó, bár az ilyen egymásra épülő feladatoknál talán nagyobb "érettséget" sugall egy harmadik módszer: a kettő kombinációja. Ilyenkor folyamatosan adod hozzá a függvényeket, amik egy jól meghatározott funkciót hajtanak végre, ami nem feltétlenül esik egybe a (teljes) kiírásbeli feladattal. Ezeket pedig egy "fő programban" hívogatod meg szükség szerint.

    A példádban ott a 2. feladat, ami annak eldöntése, hogy foglalt-e egy hely, vagy sem. Ebből készíthetnél egy foglaltsag_ellenorzes(lista, x, y) nevű függvényt, ami csak annyit csinál, hogy megnézi a lista-t, hogy az x, y hely foglalt-e (igen/nem), majd a feladathoz kapcsolódva megcsinálod a "körítést". Pl:

    def foglaltsag_ellenorzes(lista, sor, szek):
    if lista[sor][szek] == "x":
    print("A szek foglalt")
    else:
    print("A szek ures")

    # 2. feladat
    sorszam = int(input("Adja meg a sor szamat: "))
    szekszam = int(input("Adja meg a szek szamat: "))
    foglaltsag_ellenorzes(lista, sorszam-1, szekszam-1)

    Ha már egyszer elkészült egy függvény, vagy megvan egy adat, akkor azt nem kell ismételni. Mondjuk a hármas példában feleslegesen olvasod be újra a foglaltsag.txt fájlt, hiszen azt már az első feladatnál megtetted. De ahhoz is lehetne egy sima fajl_beolvasas(fajlnev) függvényed, aminek csak a fájl listába olvasása lenne a dolga.

    Két további megjegyzés a beolvasáshoz: jobb lenne mindezt a with kifejezéssel megtenni, ami automatikusan zárja is a fájlt. A másik, hogy szerintem felesleges a sorokat is külön listaelemekre bontani, hiszen egy-egy sor az tulajdonképpen egy sztring, ami eleve karakterenként indexelhető. Pl.:

    def fajl_beolvasas(fajlnev):
    with open(fajlnev, "r") as f:
    lista = [line.strip() for line in f]
    return lista

    lista = fajl_beolvasas("foglaltsag.txt")

    Köszönöm a részletes választ. :R
    Az általad javasolt módhoz még nem jutottam el, az utolsó két feladaton kivül működik a program, de gyanitom nem a legegyszerűbb módon. Nem törekszem a legeslegegyszerűbb módra, annak szerintem még nincs itt az ideje, de ezt én is túlzásnak érzem. :)

    def feladat_1():
    lista=[]

    f=open("foglaltsag.txt")
    for sor in f:
    sor=sor.strip()
    soronként=list(sor)
    lista.append(soronként)
    f.close()
    return lista
    lista=feladat_1()

    print("2. feladat")
    def feladat_2():
    sorszam=int(input("Adja meg a sor számát: "))
    szekszam=int(input("Adja meg a szék számát: "))
    sor=lista[sorszam-1]
    if sor[szekszam-1]==('x'):
    print("A hely foglalt")
    else:
    print("A hely szabad")
    feladat_2()

    print("3. feladat")
    def feladat_3():
    f=open("foglaltsag.txt")
    jegyek=0
    for sor in f:
    list(sor)
    sorcnt=sor.count("x")
    jegyek=jegyek+sorcnt
    szazalekban=int((jegyek/300)*100)
    print("Az előadásra eddig {0} jegyet adtak el, ez a nézőtér {1}%-a.".format(jegyek, szazalekban))
    f.close()
    feladat_3()

    A 4. for ciklusra gondoltam, de nem sikerült, viszont működik.

    print("4. feladat")
    def feladat_4():
    f=open("kategoria.txt")
    kat1=0
    kat2=0
    kat3=0
    kat4=0
    kat5=0
    for sor in f:
    list(sor)
    cnt1=sor.count("1")
    cnt2=sor.count("2")
    cnt3=sor.count("3")
    cnt4=sor.count("4")
    cnt5=sor.count("5")
    kat1=kat1+cnt1
    kat2=kat2+cnt2
    kat3=kat3+cnt3
    kat4=kat4+cnt4
    kat5=kat5+cnt5

    kategoriak=[kat1,kat2,kat3,kat4,kat5]
    legtobb=(kategoriak.index(max(kategoriak))+1)
    print("A legtöbb jegyet a(z) {0}. árkategóriában értékesítették.".format(legtobb) )
    f.close()

    feladat_4()

    Az 5. feladat az előző leve alapján működik, de ez is hosszú.

    print("5. feladat")
    def feladat_5():
    f=open("kategoria.txt")
    kat1=0
    kat2=0
    kat3=0
    kat4=0
    kat5=0
    for sor in f:
    list(sor)
    cnt1=sor.count("1")
    cnt2=sor.count("2")
    cnt3=sor.count("3")
    cnt4=sor.count("4")
    cnt5=sor.count("5")
    kat1=kat1+cnt1
    kat2=kat2+cnt2
    kat3=kat3+cnt3
    kat4=kat4+cnt4
    kat5=kat5+cnt5
    ar1=kat1*5000
    ar2=kat2*4000
    ar3=kat3*3000
    ar4=kat4*2000
    ar5=kat5*1500
    print("A bevétel pillanatnyilag {0}Ft".format(ar1+ar2+ar3+ar4+ar5))
    f.close()

    feladat_5()

    A 6. és 7. feladat nem sikerült, de bemásolom mivel próbálkoztam.

    def feladat_6():
    f=open("foglaltsag.txt")
    #lista=[]
    rossz1=0
    rossz2=0
    rossz3=0
    for sor in f:
    list(sor)
    #sor=sor.strip()
    #soronként=list(sor)
    #lista.append(soronként)
    #print(sor)
    #print(soronként)
    #lista.append(sor)
    cnt1=lista.count("x")
    cnt2=lista.count("xox")
    cnt3=lista.count("xo")
    rossz1=rossz1+cnt1
    rossz2=rossz2+cnt2
    rossz3=rossz3+cnt3

    print(rossz1)
    print(rossz1)
    print(rossz1)

    f.close()
    feladat_6()

    def feladat_7():
    f=open('szabad.txt','w')
    for i in range(300):
    if lista[i]=="x":
    f.close()
    feladat_7()

    Összegzésben eddig ez a legjobb munkám, eddig még egyik érettségivel sem jutottam el. A megoldókulcsból ha jól értelmezem 4 pontot veszithetek a program terjedelme miatt?
    Illetve a saját függvények készitése viszonylag megy, csak még hasznositani nem nagyon próbáltam.

Új hozzászólás Aktív témák