MENÜ

Honlap címe

Előző - #15 Medián | Tartalomjegyzék | Következő - #17 kockadobás

16. GYAKORLAT: MÓD

mód([1, 1, 2, 3, 4])  →  1

A mód a harmadik statisztikai számítási gyakorlat ebben a könyvben. A mód az a szám, amely leggyakrabban jelenik meg a számlistában. A mediánnal és az átlaggal együtt leíró összefoglalót kaphat egy számlistáról. Ez a gyakorlat azt teszteli, hogy tud-e szótárt használni a listában szereplő számok számlálására, hogy megtalálja a leggyakoribb számot.

Gyakorlat leírása

Írj egy mode()függvényt, amelynek számparamétere van . Ez a függvény a függvénynek átadott egész és lebegőpontos számok listájának módját vagy leggyakrabban előforduló számát adja vissza.

Ezek a Python- assertutasítások leállítják a programot, ha feltételük False. Másolja őket a megoldási program aljára. Az Ön megoldása akkor helyes, ha a következő assertállítások feltételei mind igazak :

assert mode([]) == Nincs

érvényesítési mód([1, 2, 3, 4, 4]) == 4

érvényesítési mód([1, 1, 2, 3, 4]) == 1

véletlenszerű importálás

random.seed(42)

testData = [1, 2, 3, 4, 4]

i tartományban (1000):

    random.shuffle(testData)

    assert mode(testData) == 4

A számok sorrendjének megkeverése nem befolyásolhatja a módot. A forciklus 1000 ilyen véletlenszerű keverést végez, hogy alaposan ellenőrizze, hogy ez a tény igaz marad-e. A random.seed() függvény magyarázatát lásd a 19. gyakorlat „Jelszógenerátor” További olvasmányok részében.

Próbáljon megoldást írni a leírásban szereplő információk alapján. Ha továbbra is problémái vannak ennek a gyakorlatnak a megoldásával, további tippekért olvassa el a Megoldástervezés és a Különleges esetek és Gotchák című részt.

Előfeltétel fogalmak: forhurkok, kiterjesztett hozzárendelési operátorok, indexek, not in operátor

Megoldás tervezése

A megoldás egy szótár segítségével követi nyomon, hogy az egyes számok milyen gyakran jelennek meg a listában. A szótár billentyűi a számok lesznek, az értékek pedig annak a száma, hogy a szám milyen gyakran jelenik meg a listában.

Kezdje egy üres szótárral, és állítson be két változót, hogy nyomon kövesse a leggyakrabban előforduló számot és azt, hogy ez a szám hányszor jelent meg a listában. Használjon forhurkot a számok közötti ciklushoz a listában numbers. Ha az éppen keresett szám nem jelenik meg a szótár kulcsaiban, akkor hozzon létre hozzá egy kulcs-érték párost, amelynek értéke a következővel kezdődik 0: . Ezután növelje ennek a számnak a számát a szótárban. Végül, ha ez a szám nagyobb, mint a leggyakoribb számok száma, frissítse a leggyakoribb számváltozót és a leggyakoribb számváltozót az aktuális számmal és annak számával.

Mire a forciklus véget ér, a leggyakoribb számváltozó tartalmazza a numbers lista üzemmódját. A mód kiszámítása hasonló a 12. gyakorlathoz, „Legkisebb és legnagyobb”. Mindkét megoldás végigfut a számok listáján, egy másik változó segítségével (a 12. gyakorlatban) nyomon követheti az eddig talált legkisebb/legnagyobb számot, vagy (ebben a gyakorlatban) az eddig talált leggyakrabban előforduló számot.

Különleges esetek és Gotchák

Ha a numbers paraméter üres lista, akkor a függvénynek vissza kell térnie None. Az ezt ellenőrző kódot a függvény elejére kell tenni.

Most próbáljon meg egy megoldást írni az előző szakaszok információi alapján. Ha továbbra is problémái vannak a gyakorlat megoldásával, olvassa el a Megoldássablon részt további tippekért.

Megoldás sablon

Próbáljon először megoldást írni a semmiből. De ha nehézségei vannak, akkor a következő részprogramot használhatja kiindulási helynek. Másolja ki a következő kódot a https://invpy.com/mode-template.py webhelyről , és illessze be a kódszerkesztőbe. Cserélje ki az aláhúzást kódra, hogy működő programot készítsen:

def mód(számok):

    # Különleges eset: Ha a számlista üres, adja vissza a Nincs:

    if len(számok) == ____:

        Visszatérés ____

 

    # Szótár számkulcsokkal és értékekkel, hogy milyen gyakran jelenjenek meg:

    számszám = {}

 

    # Kövesse nyomon a leggyakoribb számot és megjelenési gyakoriságát:

    mostFreqNumber = Nincs

    mostFreqNumberCount = ____

 

    # Lapozzon végig az összes számon, és számolja meg, hogy milyen gyakran jelennek meg:

    számhoz ____:

        # Ha a szám még nem jelent meg, állítsa a számlálást 0-ra.

        ha ____ nincs a számban:

            numberCount[____] = ____

        # Növelje a számok számát:

        numberCount[____] += ____

        # Ha ez gyakoribb, mint a leggyakoribb szám, akkor

        # lesz az új leggyakoribb szám:

        ha számSzám[szám] > ____:

            mostFreqNumber = ____

            mostFreqNumberCount = ____[____]

    # A függvény a leggyakoribb számot adja vissza:

    return mostFreqNumber

A gyakorlat teljes megoldását az A függelék és a https://invpy.com/mode.py tartalmazza . A program minden lépését megtekintheti, amint az egy hibakereső alatt fut a https://invpy.com/mode-debug/ oldalon .

Előző - #15 Medián | Tartalomjegyzék | Következő - #17 kockadobás

 

Asztali nézet