Hirdetés

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

  • cousin333

    addikt

    válasz XP NINJA #452 üzenetére

    "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]

    [ Szerkesztve ]

    "We spared no expense"

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