8. kodutöö
1. 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 parameetriteta ning tagastama 5 täisarvust koosneva järjendi; täisarvude järjekord ei ole oluline.
Kui oled juba hulk aega proovinud ülesannet iseseisvalt lahendada ja see ikka ei õnnestu, siis võib-olla saad abi murelahendajalt
. Püütud on selgitada tüüpilisemaid probleemseid selgitada ja anda vihjeid.
2. Filmide nimekiri
Failis filmid.txt on nimekiri filmidest koos nende žanritega järgneval kujul, kus igal real on tühikute ja sidekriipsuga (' - ') eraldatult filmi nimi ja žanr. Üks faili filmid.txt võimalik sisu oleks:
Shrek - multikas Avengers: End Game - märul The Quiet Place - õudukas Spider-Man - märul Moana - multikas The Conjuring 3 - õudukas
Et nimekirja oleks võimalik mugavalt täiendada, koosta selle jaoks Pythoni fail film.py ning kirjuta sinna järgmised funktsioonid:
- Funktsioon loetleFilmid, mis võtab argumendiks žanri nime ning tagastab järjendi kõikide filmide nimedega, mis on etteantud žanrist.
- Funktsioon lisaFilm, millel on kaks argumenti: esimeseks argumendiks on nimi ning teiseks žanr. Funktsioon peab lisama olemasolevasse faili filmid.txt soovitud filmi koos žanriga kujul nimi - žanr, näiteks Spider-Man - märul.
- Funktsioon kustutaFilm, mis võtab argumendiks filmi nime ning kustutab selle olemasolevast tekstifailist ära.
Funktsioon loetleFilmid peab ülaloleva näitefaili filmid.txt puhul käituma järgmiselt:
>>> loetleFilmid("märul") ['Avengers: End Game', 'Spider-Man']
Automaatkontroll. Programmifaili nimi peab olema film.py. Funktsioonil loetleFilmid peab olema üks parameeter - žanri nimetus, mis on sõne. Funktsioon avab faili filmid.txt ja tagastab sobivate filmide nimede järjendi. Filmide järjekord selles ei ole oluline, aga järjend peab sisaldama parajasti kõigi sobivate filmide nimesid. Funktsioonil lisaFilm peab olema kaks parameetrit: filmi nimi ja žanri nimetus, mis on mõlemad sõned. Funktsioon avab faili filmid.txt ja kirjutab sinna uue rea sobival kujul. Funktsioonil kustutaFilm peab olema üks parameeter: filmi nimi, mis on sõne. Funktsioon avab faili filmid.txt ja eemaldab sealt rea, kus on kirjas vastav film.
3. Juku filmiandmebaas
Juku on suur filmisõber, kuid tal pole palju aega, et neid vaadata. Seega otsustas Juku koostada endale programmi, mis aitaks tal järge pidada heade filmide üle, et need tal meelest ära ei läheks. Kuna Jukul on vähe aega, loodab ta sealjuures, et ei pea kogu programmi koodi ise nullist kirjutama ja saab võimalikult palju olemasolevaid funktsioone ära kasutada.
Aita Jukut ja kirjuta programm, mis võimaldab filme valida žanrite järgi. Programm peaks vajaminevad funktsioonid importima eelmises ülesandes loodud moodulist film
(fail film.py). Pärast filmi valikut peab programm valitud filmi tekstifailist ära kustutama. Programm peab lubama ka soovi korral filme lisada. Kui tekstifailis pole soovitud žanrist ühtegi filmi, peab programm sellest teada andma ja andma uue võimaluse valikut teha.
Kõigepealt koosta funktsioon töötleKäsk, millel on kaks parameetrit: käsu tähis ning järjend, mis sisaldab käsu argumente. Funktsioon peab:
- Käsu K puhul ekraanile väljastama nimekirja filmidest, mis on etteantud žanrist
- Käsu L puhul lisama etteantud žanri ja nimega filmi faili
- Käsu V puhul kustutama filmi failis olevast nimekirjast
- Käsu E puhul tagastama tõeväärtuse
False
(teiste käskude puhul tagastatakseTrue
).
Põhiprogrammis peab kasutaja saama käsurealt korduvalt sisestada nelja käsklust järgmisel kujul:
K <žanr> L <žanr> <filmi nimi> V <filmi nimi> E
Võib eeldada, et filmi žanri nimetus ei sisalda tühikuid.
Näide programmi tööst
>>> %Run nimi.py === FILMIANDMEBAAS === Kuva filmid: K <žanr> Lisa film: L <žanr> <film> Vaata filmi: V <filmi nimi> Lõpeta: E === > K märul Võimalikud filmid on: Avengers: End Game Spider-Man > L komöödia Borat Film lisatud! > V Avengers: End Game Film nimekirjast kustutatud! Head vaatamist! > E >>>
Automaatkontroll. Programm impordib mooduli nimega film. Programmis peab olema kirjeldatud kahe argumendiga funktsioon töötleKäsk (arvesta suuri ja väikesi tähti). Funktsiooni esimene argument on sõne ning teine argument sõnedest koosnev järjend. Järjend võib ka tühi olla. Funktsioon väljastab ekraanile käsu tulemuse ja tagastab sobiva tõeväärtuse: False
, kui programmi töö tuleks lõpetada ning vastasel juhul True
. Põhiprogrammis peab kasutaja saama korduvalt sisestada käsklusi, kusjuures käsklused peavad olema järgmisel kujul: esimesel kohal on käsu tähiseks olev täht, millele järgneb tühik ning seejärel tühikuga eraldatud argumendid. Käsu E sisestamisel lõpetab programm töö.
4. Projektiteema valimine
Tutvu Moodle'is projekti nõuete ja soovitustega. Leia endale rühmakaaslane ja esita koos rühmakaaslasega Moodle'i kaudu oma idee.
Esita programmid
Esita ülesannete lahendused Moodle'i kaudu failidena kodu1.py, kodu2.py ja kodu3.py.