7. kodutöö
1. Reisi valimine
Kõik reisibüroost valitavad reisid on failis reisid.txt järgneval kujul, kus igas reas on semikooloniga eraldatult reisi nimetus ning hind eurodes. Üks faili reisid.txt võimalik sisu oleks:
Helsingi päevakruiis;29 matk Tokyo mägedes;700 romantiline nädalalõpp Pärnus;150 Praha pubiralli;400
Esmalt koosta funktsioon loetleReisid, mis võtab argumendiks failinime ning maksimaalse eelarve. Funktsioon peab antud failist välja valima reisid, mille maksumus mahub eelarvesse, ning koostama neist järjendi. Funktsiooni töö lõpus tuleb see järjend tagastada. Faili ridade sisselugemiseks võiks harjutamise mõttes kasutada funktsiooni readlines.
Funktsioon loetleReisid peab ülaloleva näitefaili reisid.txt puhul käituma järgmiselt:
>>> loetleReisid('reisid.txt', 200) ['Helsingi päevakruiis', 'romantiline nädalalõpp Pärnus']
Seejärel küsib programm kasutajalt talle sobilikku eelarvet ning leiab koostatud funktsiooni abil talle sobivad reisid failist reisid.txt. Ekraanile kuvada kõik reisid, mis eelarvesse mahtusid.
Näide programmi tööst:
Sisesta sobiv reisi eelarve: 200 Sobivad reisid on: Helsingi päevakruiis romantiline nädalalõpp Pärnus
Automaatkontroll. Funktsioonil loetleReisid peab olema kaks parameetrit: esimene parameeter failinimi ja teine parameeter eelarve suurus arvuna, viimane võib olla nii täisarv kui ka ujukomaarv. Funktsioon tagastab sobivate reiside nimede järjendi. Reiside järjekord selles ei ole oluline, aga järjend peab sisaldama parajasti kõigi sobivate reiside nimesid. Põhiprogramm küsib kasutajalt täpselt ühte arvu, reisi eelarvet, mis võib olla ka ujukomaarv. Failinimi reisid.txt, millega pöördutakse funktsiooni loetleReisid poole, peab olema programmi sisse kirjutatud. Programm väljastab ekraanile kõigi sobivate reiside loendi ükskõik millises järjestuses.
2. Bingo!
Koosta argumentideta funktsioon bingo, mis genereerib bingonumbreid. Funktsioon peab järjendina tagastama 5 arvu, millest 3 on vahemikus 1 kuni 10 ning ülejäänud 2 on vahemikus 11 kuni 20.
Funktsioon ei tohi lubada sellist olukorda, kus järjendisse jääksid korraga 1, 2 ja 3. Sellisel juhul tuleb genereerida uued arvud.
Vihje. Kattumatute juhuslike arvude genereerimiseks saab kasutada funktsiooni sample teegist random (ettevaatust: funktsioonis range on vahemiku lõpp välja arvatud!):
>>> from random import sample >>> sample(range(1, 5), 2) [4, 1]
Näide funktsiooni tööst:
>>> bingo() [8, 3, 5, 16, 11]
Automaatkontroll. Funktsioon peab olema ilma parameetritega ning tagastama 5 täisarvust koosneva järjendi; täisarvude järjekord ei ole oluline.
3. Müügihindade arvutamine
Kirjuta funktsioon arvutaHinnad, mis võtab argumendiks ujukomaarvudena esitatud hindade järjendi ning ujukomaarvuna esitatud juurdehindlusprotsendi.
Funktsioon peab tagastama uue järjendi, mis koosneb sisendiks antud hindadest, millele on lisatud juurdehindlus ning 20% käibemaksu.
Näide funktsiooni tööst:
>>> arvutaHinnad([100.0, 1200.0], 10.0) [132.0, 1584.0]
Automaatkontroll. Programmis peab olema kirjeldatud kahe argumendiga funktsioon arvutaHinnad (arvesta suuri ja väikesi tähti). Funktsiooni esimene argument on ujukomaarvude järjend ning teine argument ujukomaarv. Funktsiooni tagastatav järjend peab olema sama pikk kui sisendjärjend ja arvutatud uued hinnad seal samas järjestuses nagu sisendjärjendis.