Seminarska naloga-Programiranje-1.naloga

Seminarska naloga-Programiranje-1.naloga

Avtor: Martina Nemec

Besedilo naloge

Lestvica

Na datotekah prva.txt in druga.txt so zapisani podatki o priljubljenosti skladb na lokalni radijski postaji Vreščalo. V vsaki vrstici so podatki: ime izvajalca in naslov skladbe ter število glasov. Podatek o številu glasov je s podpičjem ločen od ostalih podatkov. Podatki NISO urejeni, se pa vsaka skladba pojavi samo enkrat. Ob koncu drugega leta je želel DJ Ropotalo poiskati tisto skladbo, kateri je priljubljenost najbolj narasla ali padla v enem letu. (Priljubljenost je uvrstitev na lestvici glede na število prejetih glasov.)

Sestavite datoteki prva.txt in druga.txt z naključnimi, a smiselnimi podatki. Nato nad njim implemetirajte algoritem, ki bo za DJ Ropotalo med skladbami poiskalo željeno. Algoritem implementirajte kot metodo, ki kot rezultat vrne niz, v katerem je zapisano ime iskane skladbe.

Rešitev problema brez programa

Na začetku si naredimo dve dateki: prva.txt in druga.txt.

Prva datoteka Druga datoteka

Na prvi datoteki imamo zapisane imena skladb in glasove, ki so jih prejeli pred enim letom.

Na drugi datoteki pa imamo zapisane imena skladb in glasove, ki so jih prejeli sedaj.

Ker DJ Ropotalo zanima katera skladba je najbolj priljubljena in katera najmanj mu bomo s pomočjo programa pomagali rešiti problem.

Kako se lotiti naloge?

Da lahko program zapišemo si moramo najprej predstavljati, kako bi rešili to nalogo brez programa.

Pogledamo posamezne glasove skladb iz druge datoteke in jih poiščemo v prvi datoteki. Sedaj številu glasov skladbe iz druge datoteke odštejemo število glasov skladbe iz prve datoteke. Če za rezultat dobimo negativno število potem je skladbi priljubljenost upadla. Če za rezultat dobimo pozitivno število pa je skladbi priljubljenost narasla.

Rešitev problema s programom Python

Definirajmo funkcijo ropotalo kjer podamo dva parametra, datoteki prva in druga.

(slika1.jpg)

Če želimo podatke iz datoteke brati jih moramo odpreti. To naredimo s pomočjo metode open:

(slika2.jpg)

parameter 'r' nam omogoča da iz datoteke samo beremo.(po angleško read)

Sedaj s pomočjo for zanke gremo po vsaki vrstici: Metoda strip() nam izbriše vse bele znake(tabulatorji, presledki,...) Metoda split pa nam vsako vrstico preoblikuje v seznam. Ime izvajalca in glasove pa ločimo s ;. Tako nam znotraj seznama naredi dva niza. V enem je ime izvajalca in ime skladbe, v drugem pa število glasov. Naredimo si sedaj en seznam iz vseh teh skladb. to naredimo tako da si pred for zanko definiramo nek seznam a v katerega bomo zapisali vse sezname iz druge datoteke. Zapis vseh seznamov v nov seznam naredimo s pomočjo metode append:

(slika3.jpg)

Enako naredimo tudi s prvo datoteko:

  • for zanka
  • strip
  • split

Ostanemo v for zanki. V tej for zanki napišemo še eno for zanko, ki bo brala podatke iz seznama a. Sedaj s pomočjo if stavka poiščemo enake pesmi iz prve datotek in iz druge datoteke:

(slika5.jpg)

Število zapisano v oglatih oklepajih ([]) nam pove na katerem mestu je element. Indeks začne brati elemente od 0 naprej.

Če je niz iz prve datoteke enak nizu iz druge datoteke potem številu glasov iz druge datoteke odštejemo število glasov iz prve datoteke.

Sedaj pa še zapišimo katera skladba je najbolj priljubljena in katera najmanj.

To naredimo s pomočjo stavka if. Najprej si definiramo dva števca, v našem primeru x=0 in y=0, ki bosta preverila tista števila katera so večja od nič in katera manjša. Definiramo še dva niza m in n v katera bomo zapisali ime skladbe.

Ko zapišemo if stavek je v prvem primeru b>0(preverimo za števila, ki so pozitivna) Ker pa smo še vedno v for zanki bo si python po vsakem obhodu zapomnil največje število. Ta števila bomo shranili v spremenljivko x. V seznam m pa zapišimo ime skladbe ki ji je priljubljenost najbolj narasla.

Enako naredimo za števila b ki so manjša od 0. Prav tako si bo python ob vsakem obhodu zapomnil manjše število, tako bomo na koncu v seznam n zapisali skladbo ki ji je priljubljenost najbolj upadla.

Na koncu izpišemo niza m in n.

Program

(slika6.jpg)

Preizkus programa

Testni program prikazan s pomočjo filma:

0%
0%