Megoldás: A feladatsor egy lehetséges megoldása elérhető ide kattintva.
A playlist.csv
állomány (letöltés) a telefonra letöltött zenéink adatait tartalmazza. A fájl egyes soraiban szereplő, pontosvesszővel elválasztott adatok rendre:
Írj egy beolvas
függvényt, amely nem vár paramétert! A függvény olvassa be a playlist.csv
fájl tartalmát! A beolvasott sorok feldarabolása után minden zene adatait egy dictionary-ben tárold el! A dictionary-k az eloado
, cim
, mufaj
és hossz
kulcsokkal rendelkezzenek, amelyek közül a hossz
kulcshoz tartozó érték egész szám, a többi kulcshoz tartozó érték string! Az így kapott dictionary-ket helyezd egy listába, majd térj vissza a listával!
A fájlkezelés során ügyelj arra, hogy a megnyitott fájl minden esetben biztonságosan le legyen zárva! Ehhez használd a gyakorlaton tanult, kontextus-kezelős megoldást!
A függvény elvárt visszatérési értéke:
[ {'eloado': 'Rick Astley', 'cim': 'Never Gonna Give You Up', 'mufaj': 'pop', 'hossz': 213}, {'eloado': 'Imagine Dragons', 'cim': 'Thunder', 'mufaj': 'pop', 'hossz': 204}, {'eloado': 'Dragonforce', 'cim': 'Through the Fire and Flames', 'mufaj': 'metal', 'hossz': 445}, {'eloado': 'Boney M.', 'cim': 'Rasputin', 'mufaj': 'pop', 'hossz': 284}, {'eloado': 'Steppenwolf', 'cim': 'Born To Be Wild', 'mufaj': 'rock', 'hossz': 216}, {'eloado': 'Powerwolf', 'cim': 'Incense and Iron', 'mufaj': 'metal', 'hossz': 240}, {'eloado': 'Smash Mouth', 'cim': 'All Star', 'mufaj': 'rock', 'hossz': 237}, {'eloado': 'Nirvana', 'cim': 'Smells Like Teen Spirit', 'mufaj': 'rock', 'hossz': 279}, {'eloado': 'Gloryhammer', 'cim': 'The Unicorn Invasion of Dundee', 'mufaj': 'metal', 'hossz': 265}, {'eloado': 'Powerwolf', 'cim': 'Venom of Venus', 'mufaj': 'metal', 'hossz': 208}, {'eloado': 'Imagine Dragons', 'cim': 'Radioactive', 'mufaj': 'rock', 'hossz': 188}, {'eloado': 'Dschinghis Khan', 'cim': 'Moskau', 'mufaj': 'pop', 'hossz': 275}, {'eloado': 'Dschinghis Khan', 'cim': 'Dschinghis Khan', 'mufaj': 'pop', 'hossz': 185}, {'eloado': 'Bonnie Tyler', 'cim': 'Total Eclipse of the Heart', 'mufaj': 'pop', 'hossz': 334}, {'eloado': 'Gopnik McBlyat', 'cim': 'Snakes In Tracksuits', 'mufaj': 'hardbass', 'hossz': 261}, {'eloado': 'Foster The People', 'cim': 'Pumped Up Kicks', 'mufaj': 'pop', 'hossz': 253}, {'eloado': 'Linkin Park', 'cim': 'In The End', 'mufaj': 'rock', 'hossz': 219}, {'eloado': 'Powerwolf', 'cim': 'Dancing With The Dead', 'mufaj': 'metal', 'hossz': 291}, {'eloado': 'Green Day', 'cim': 'Boulevard of Broken Dreams', 'mufaj': 'rock', 'hossz': 288}, {'eloado': 'Korpiklaani', 'cim': 'Ievan polkka', 'mufaj': 'metal', 'hossz': 194} ]
Írj egy teljes_hossz
függvényt, amely a lejátszási listát (a beolvas
függvény visszatérési értékét) várja paraméterül! A függvény összegezze a lejátszási listában található zenék hosszát! Az összesített hosszt váltsd át percekbe és másodpercekbe, majd az átváltás eredményét írasd ki egy 02_hossz.txt
nevű szöveges fájlba!
A fájlkezelés során ügyelj arra, hogy a megnyitott fájl minden esetben biztonságosan le legyen zárva! Ehhez használd a gyakorlaton tanult, kontextus-kezelős megoldást!
A 02_hossz.txt
fájl elvárt tartalma:
A lejatszasi lista hossza: 84 perc, 39 masodperc
Írj egy leghosszabb_rockzene
függvényt, amely a lejátszási listát várja paraméterül! A függvény írja ki egy 03_leghosszabb_rock.txt
nevű szöveges fájlba a lejátszási listában található leghosszabb, rock műfajú zene címét! Amennyiben több zene is ugyanolyan hosszú, akkor közülük a listában korábban előfordulót válaszd!
A fájlkezelés során ügyelj arra, hogy a megnyitott fájl minden esetben biztonságosan le legyen zárva! Ehhez használd a gyakorlaton tanult, kontextus-kezelős megoldást!
A 03_leghosszabb_rock.txt
fájl elvárt tartalma:
Boulevard of Broken Dreams
Írj egy leggyakoribb_mufaj
függvényt, amely a lejátszási listát várja paraméterül! A függvény számolja össze, hogy műfajonként hány zene található a lejátszási listában, majd határozza meg, hogy melyik műfaj fordul elő a leggyakrabban! Az eredményt írasd ki egy 04_kedvenc_mufaj.txt
nevű szöveges fájlba, csupa nagybetűkkel! Amennyiben több műfaj is ugyanannyiszor fordul elő, akkor közülük tetszőlegesen válassz egyet!
A fájlkezelés során ügyelj arra, hogy a megnyitott fájl minden esetben biztonságosan le legyen zárva! Ehhez használd a gyakorlaton tanult, kontextus-kezelős megoldást!
A 04_kedvenc_mufaj.txt
fájl elvárt tartalma:
POP
Írj egy zeneket_csoportosit
függvényt, amely a lejátszási listát várja paraméterül! A függvény számítsa ki a lejátszási listában szereplő összes előadóra, hogy összesen hány másodpercnyi zene található az inputban az adott előadótól! Az eredményt írasd ki egy 05_osszegzes.txt
nevű szöveges fájlba, a példában látható formátumban úgy, hogy a kimeneti fájlban az előadónevek ábécé sorrendben szerepeljenek!
A fájlkezelés során ügyelj arra, hogy a megnyitott fájl minden esetben biztonságosan le legyen zárva! Ehhez használd a gyakorlaton tanult, kontextus-kezelős megoldást!
A 05_osszegzes.txt
fájl elvárt tartalma:
Boney M. - osszesen 284 masodpercnyi zene Bonnie Tyler - osszesen 334 masodpercnyi zene Dragonforce - osszesen 445 masodpercnyi zene Dschinghis Khan - osszesen 460 masodpercnyi zene Foster The People - osszesen 253 masodpercnyi zene Gloryhammer - osszesen 265 masodpercnyi zene Gopnik McBlyat - osszesen 261 masodpercnyi zene Green Day - osszesen 288 masodpercnyi zene Imagine Dragons - osszesen 392 masodpercnyi zene Korpiklaani - osszesen 194 masodpercnyi zene Linkin Park - osszesen 219 masodpercnyi zene Nirvana - osszesen 279 masodpercnyi zene Powerwolf - osszesen 739 masodpercnyi zene Rick Astley - osszesen 213 masodpercnyi zene Smash Mouth - osszesen 237 masodpercnyi zene Steppenwolf - osszesen 216 masodpercnyi zene
Írj egy zeneket_listaz
függvényt, amely két paramétert vár: rendre a lejátszási listát, és egy előadó nevét!
Hozz létre egy 06_eloadonev_dalok.txt
szöveges fájlt, ahol eloadonev
helyére a paraméterül kapott előadó neve kerüljön, csupa kisbetűkkel! A több szóból álló előadónevekben a szóköz karaktereket cseréld le alulvonás karakterekre (így pl. Imagine Dragons
előadónév esetén a fájlnév 06_imagine_dragons_dalok.txt
lesz)! (3 pont)
Válogasd ki az adott előadó zenéit a lejátszási listából! Az előadónév keresésekor ne különböztesd meg a kis- és nagybetűket (tehát pl. Rick Astley
és RICK ASTLEY
ugyanaz)! A kiválogatott zenéket írasd ki az imént létrehozott fájl egy-egy sorába úgy, hogy minden sor esetén pontosvesszővel elválasztva felsorolod a zene címét, műfaját és hosszát! (5 pont)
Kezeld le azt az esetet, amikor a paraméterben kapott előadó nem szerepel a lejátszási listában! Ekkor a Nincs ilyen eloado a lejatszasi listaban!
szöveg kerüljön a kimeneti fájlba! (2 pont)
A fájlkezelés során ügyelj arra, hogy a megnyitott fájl minden esetben biztonságosan le legyen zárva! Ehhez használd a gyakorlaton tanult, kontextus-kezelős megoldást!
Példa a függvény működésére:
Előadó neve: 'POWERWOLF' A 06_powerwolf_dalok.txt fájl tartalma: Incense and Iron;metal;240 Venom of Venus;metal;208 Dancing With The Dead;metal;291
Előadó neve: 'Imagine Dragons' A 06_imagine_dragons_dalok.txt fájl tartalma: Thunder;pop;204 Radioactive;rock;188
Előadó neve: 'Taylor Swift' A 06_taylor_swift_dalok.txt fájl tartalma: Nincs ilyen eloado a lejatszasi listaban!
Írj egy zeneket_torol
függvényt, amely két paramétert vár: rendre a lejátszási listát és egy előadóneveket tartalmazó listát! A függvény írja ki egy 07_torolt.txt
szöveges fájlba azoknak a zenéknek az adatait, amelyek előadója nem szerepel a második paraméterben kapott listában!
A fájlkezelés során ügyelj arra, hogy a megnyitott fájl minden esetben biztonságosan le legyen zárva! Ehhez használd a gyakorlaton tanult, kontextus-kezelős megoldást!
Példa a függvény működésére:
Előadók nevei: ['Imagine Dragons', 'Rick Astley', 'Powerwolf'] A 07_torolt.txt fájl tartalma: Dragonforce;Through the Fire and Flames;metal;445 Boney M.;Rasputin;pop;284 Steppenwolf;Born To Be Wild;rock;216 Smash Mouth;All Star;rock;237 Nirvana;Smells Like Teen Spirit;rock;279 Gloryhammer;The Unicorn Invasion of Dundee;metal;265 Dschinghis Khan;Moskau;pop;275 Dschinghis Khan;Dschinghis Khan;pop;185 Bonnie Tyler;Total Eclipse of the Heart;pop;334 Gopnik McBlyat;Snakes In Tracksuits;hardbass;261 Foster The People;Pumped Up Kicks;pop;253 Linkin Park;In The End;rock;219 Green Day;Boulevard of Broken Dreams;rock;288 Korpiklaani;Ievan polkka;metal;194