2. kontrolltöö praktilise osa näidisülesanded
Näidisülesanne 1. Püropood
103 aastat tagasi kuulutas Läti Vabariik end iseseisvaks. Sünnipäeva puhul ostetakse kauplustest palju pürotehnikat. Et arvepidamine segi ei läheks, koostas kauplus kogu pürotehnika kohta hinnakirja, mis asub failis hinnakiri.txt. Failis on igal real komadega eraldatult toote nimi sõnena, hind ujukomaarvuna ja toote värvus sõnena. Ridade arv failis pole ette teada.
Näide faili hinnakiri.txt võimalikust sisust
taevalatern,3.80,kuldne raketid,14.10,roheline taevalatern,2.70,punane
Kirjuta funktsioon loe_failist, mis võtab argumendiks faili nime ning tagastab sõnastiku, kus võtmeks on toote nimi ning väärtuseks on sõnastik, kus on kirjas toote värvused ja hinnad. Selle sõnastiku võtmeks on värvus ning väärtuseks toote hind ujukomaarvuna. Samanimeliste toodete värvused ja hinnad tuleb lisada sisemisse sõnastikku.
Näide funktsiooni loe_failist tööst
>>> loe_failist("hinnakiri.txt") {'taevalatern': {'kuldne': 3.8, 'punane': 2.7}, 'raketid': {'roheline': 14.1}}
Põhiprogrammis tuleb funktsiooni loe_failist abil sisse lugeda andmed failist hinnakiri.txt. Seejärel peab programm väljastama eraldi ridadele hinnakirjas olevad tooted koos hinna ja värvusega, mis on sulgudes (soovitav teha eraldi funktsioon). Järgmiseks küsib programm kasutajalt, millist toodet ta soovib osta. Kui selle nimega toode on olemas, tuleb küsida kasutajalt värvust. Kui toode või vastava värvusega toode puudub, siis antakse sellest kasutajale teada ning küsitakse uuesti toote nime. Pärast igat edukat toote ostukorvi lisamist väljastatakse kasutajale valitud kaupade jooksev summa. Tooteid küsitakse seni kuni kasutaja sisestab tühja sõne (""). Seejärel väljastab programm tasumisele kuuluva kogusumma ning lõpetab töö.
Näide põhiprogrammi tööst
Kaupluses on müügil järgmised tooted: taevalatern - 3.8€ (kuldne) taevalatern - 2.7€ (punane) raketid - 14.1€ (roheline) Sisesta ostusoov: taevalatern Sisesta toote värvus: sinine Sellise värvusega toodet ei ole. Sisesta ostusoov: taevalatern Sisesta toote värvus: punane Jooksev summa on 2.7€. Sisesta ostusoov: raketid Sisesta toote värvus: roheline Jooksev summa on 16.8€. Sisesta ostusoov: Tasuda tuleb 16.8€.
Ülesanne 2. Hokiturniir
Failis hokiturniir.txt on kirjas hokiturniiri tulemused võistkondade kaupa. Igal real on ühe hokivõistkonna mängude tulemused, kus "V" on võit ja "K" on kaotus (sellel turniiril viike ei ole). Tulemuste eraldajaks on semikoolon (';').Võib eeldada, et igal võistkonnal on sama palju tulemusi. Ridade arv failis pole ette teada.
Näide faili hokiturniir.txt võimalikust sisust
K;K;K V;V;K V;V;V K;K;V
Koostada funktsioon loe_tulemused, mis võtab argumendiks failinime ja tagastab kahemõõtmelise järjendi hokitulemuste kohta.
Näide funktsiooni loe_tulemused tööst
>>> loe_tulemused('hokiturniir.txt') [['K', 'K', 'K'], ['V', 'V', 'K'], ['V', 'V', 'V'], ['K', 'K', 'V']]
Read on paigutatud ülevaatlikkuse mõttes üksteise alla.
Kirjuta funktsioon kes_võitis, mis võtab argumendiks kahemõõtmelise järjendi ja tagastab täisarvu, mitmes võistkond teenis kõige rohkem võite. Loendamine toimub selliselt, et kui kõige rohkem võite saavutas esimesel real olev võistkond, siis tagastab funktsioon täisarvu 1, kui teisel real olev võistkond, siis arvu 2 jne. Kui mitmel võistkonnal on võite sama palju, siis tagastatakse esimese sellise võistkonna järjekorranumber.
Näide funktsiooni kes_võitis tööst
>>> kes_võitis([['V', 'V', 'V'], ['K', 'K', 'K'], ['V', 'V', 'K'], ['K', 'K', 'V']]) 1 >>> kes_võitis([['V', 'K', 'K'], ['K', 'V', 'V'], ['V', 'K', 'V'], ['V', 'K', 'K']]) 2
Koosta programm, mis
- küsib kasutajalt failinime ja loeb andmed failist kahemõõtmelisse järjendisse, kasutades funktsiooni loe_tulemused,
- väljastab ekraanile, mitmes võistkond sai kõige rohkem võite, kasutades funktsiooni kes_võitis.
Näide programmi tööst
Sisestage failinimi: hokiturniir.txt Turniiri võitis 3. võistkond.