Előző - #15 Medián | Tartalomjegyzék | Következő - #17 kockadobás
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