Keresés

Hirdetés

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

  • EQMontoya

    veterán

    válasz szaszayanou #624 üzenetére

    Ha jól sejtem, a végén kapsz egy exception-t. :)
    Index <x> is out of bounds.

    if kiserlet[szamlalo] == "F" and kiserlet[szamlalo+1] == "F":

    Itt ugyanis szamlalo+1 simán túlindexel.

    További problémák a kóddal, hogy rosszul számolsz.
    Mert 'IFFFI' sorozatot beszámítod kétszer, pedig ha jól értem, Neked azok az esetek kellenek, amikor pontosan két fej van egymás mögött.

    Same rules apply!

  • cousin333

    addikt

    válasz szaszayanou #624 üzenetére

    Nem találtam a feladatsort, ezért az általad írtakra hagyatkozom:

    Az első feladatban nem zártad be a megnyitott fájlt. Ezt megelőzheted a with használatával, az automatikusan bezárja, és amúgy is a preferált mód. Megnyitjuk a fájlt, egy lépésben beolvassuk és a sortörések (\n) mentén szétszedjük:

    with open('D:\\kiserlet.txt', 'r') as f:
    kiserlet = f.read().split('\n')

    A második példában feltétlenül számokat kell beírni? Használhatnád a random könyvtár choice függvényét is, ami egy lista-szerű elemből választ ki egyet találomra. Ez a lista most persze fej vagy írás:

    valasztek = ('F', 'I')

    tipp = input("Fej (F) vagy írás (I)? ")

    if tipp == random.choice(valasztek):
    print("Eltaláltad!")
    else:
    print("Sajnos tévedtél!")

    A harmadik feladat megoldása jó. Esetleg még így lehetne:

    print("A kiserlet {} mintabol allt.".format(len(kiserlet)))

    Tekintve, hogy a fenti beolvasás nyomán a kiserlet egy lista, a negyedik feladat megoldásához felesleges a for ciklus, és használhatjuk a sztring formázást is a céljainkhoz.

    arany = kiserlet.count("F") / len(kiserlet)
    print("A fejek relatív gyakorisága {:.2%}".format(arany))

    Az utolsó feladat pontos célja nem elég világos számomra, ezért most feltételezem, hogy nem lapolódhatnak át az "FF"-ek, tehát az "FFF" csak egynek számít, az "FFFF" meg kettőnek. Ebben az esetben használhatunk beépített függvényt, de ehhez a listánkból először egy sztringet gyártanunk a join használatával. Így egy lépésből megvan a kívánt szám:

    dupla = "".join(kiserlet).count("FF")
    print("A két egymást követő fejek száma: {}".format(dupla))

    Tényleg, mit lehet használni egy ilyen vizsgán?

    [ Szerkesztve ]

    "We spared no expense"

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