Arvutiteaduse instituut
  1. Kursused
  2. 2021/22 sügis
  3. Programmeerimine (LTAT.03.001)
EN
Logi sisse

Programmeerimine 2021/22 sügis

  • Pealeht
  • Silmaringimaterjalid
  • Viiteid

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 parameetritega 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 kood 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:

  1. Funktsioon loetleFilmid, mis võtab argumendiks žanri nime ning tagastab järjendi kõikide filmide nimedega, mis on etteantud žanrist.
  2. Funktsioon lisaFilm, millel on kaks argumenti. Esimeseks argumendiks on nimi ning teiseks žanr. Funktsioon peab olemasolevasse faili filmid.txt soovitud filmi koos žanriga lisama kujul nimi - žanr, näiteks Spider-Man - märul.
  3. 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.

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 nime ja žanriga filmi faili
  • Käsu V puhul kustutama filmi failis olevast nimekirjast
  • Käsu E puhul tagastama tõeväärtuse False (teiste käskude puhul tagastatakse True).

Põhiprogrammis peab kasutaja saama käsurealt 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 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.

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.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused