Hirdetés

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

  • cousin333
    addikt

    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.

    "Nem törekszem a legeslegegyszerűbb módra, annak szerintem még nincs itt az ideje, de ezt én is túlzásnak érzem."

    Szerintem a Python nyelv egyik legjobb tulajdonsága, hogy alapból egyszerű és logikus szerkezeteket használ. Teljesen felesleges elbonyolítani a dolgokat, érdemes egyből az egyszerűre rámenni.

    Ami a megoldásodat illeti, az első feladatban két fájlt is be kéne olvasni, nem csak a foglaltsag.txt-t. A 4. feladat sem jó, mert nem az a kérdés, hogy melyik kategóriájú székből van a legtöbb, hanem hogy melyikből adták el a legtöbbet. Ehhez viszont valahol fel kéne használni a lista nevű listádat, ami sehol nem szerepel.

    Az én megoldásom alább látható. Nem ellenőriztem le valós adatokkal és azt sem állítom, hogy nem létezik szebb vagy egyszerűbb megoldás a problémákra. Most ennyire tellett:

    print("1. feladat")

    def fajl_beolvasas(fajlnev):
    with open(fajlnev, 'r') as f:
    adat = [sor.strip('\n') for sor in f]
    return adat

    fog_lista = fajl_beolvasas("foglaltsag.txt")
    kat_lista = fajl_beolvasas("kategoria.txt")


    print("2. feladat")

    def foglaltsag_ellenorzes(lista, sor, szek):
    if lista[sor][szek] == "x":
    return True
    else:
    return False

    sor = int(input("A sor szama? "))
    szek = int(input("A szek szama? "))
    if foglaltsag_ellenorzes(fog_lista, sor, szek):
    print("A szek mar foglalt")
    else:
    print("A szek meg ures")


    print("3. feladat")

    # Összefűzzük a foglaltságokat egyetlen sztringbe, hogy egyszerűbb legyen számolni
    fog_sztring = "".join(fog_lista)

    # Az alábbi formázás automatikusan egész százalékokat ír ki
    uzenet = "Eddig {} jegyet adtak el, ami a nezoter {:.0%}-a"

    foglalt_db = fog_sztring.count("x")
    print(uzenet.format(foglalt_db, foglalt_db/len(fog_sztring)))


    print("4. feladat")

    # Összefűzzük a kategóriákat is egyetlen sztringbe, hogy egyszerűbb legyen számolni
    kat_sztring = "".join(kat_lista)

    # A kategorizált ülőhelyeket egy szótárba (dictionary) tesszük. Elsőre mind üres.
    kategorizalt = {"1": 0, "2": 0, "3": 0, "4": 0, "5": 0}

    # Végigmegyünk a foglaltsági fájlon, és megszámoljuk a foglalt kategorizált üléseket
    for i, fogl in enumerate(fog_sztring):
    if fogl == "x":
    kateg = kat_sztring[i] # A kategória neve, ami a kategoria.txt fájlban volt
    kategorizalt[kateg] += 1

    legtobb = max(kategorizalt, key=kategorizalt.get)
    print("A legtobb jegyet a {} kategoriaban adtak el".format(legtobb))


    print("5. feladat")

    arak = {"1": 5000, "2": 4000, "3": 3000, "4": 2000, "5": 1500}

    bevetel = 0
    for kat in kategorizalt:
    bevetel += kategorizalt[kat] * arak[kat]

    print("A pillanatnyi bevetel: {}Ft".format(bevetel))


    print("6. feladat")

    egyedul = 0
    for sor in fog_lista:
    # Ha a sor elején van egy egyedülálló üres hely
    if sor.startswith("ox"):
    egyedul += 1
    # Ha a sor végén van egy egyedülálló üres hely
    if sor.endswith("xo"):
    egyedul += 1
    # Ha a soron belül vannak egyedülálló üres helyek
    egyedul += sor.count("xox")

    print("A nezoteren jelenleg {} egyedulallo ures hely van".format(egyedul))


    print("7. feladat")

    sum_lista = []
    for i, sor in enumerate(fog_lista):
    sum_sor = []

    for j, szek in enumerate(sor):
    if szek == "x":
    sum_sor.append("x")
    else:
    sum_sor.append(kat_lista[i][j])

    sum_lista.append(sum_sor)

    with open("szabad.txt", "w") as f:
    [f.write(line + '\n') for line in sum_lista]

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