14. kodutöö
1. Raamatukogu
Koosta klass nimega Raamat
, mille konstruktori parameetriteks on raamatu pealkiri, raamatu autor, raamatu lehekülgede arv ning raamatu liik (romaan, muinasjutt, detektiiv jne). Klassis peab ka olema meetod kuva_info, mis väljastab ekraanile raamatu info loetaval kujul.
>>> tõde_ja_õigus = Raamat("Tõde ja õigus", "A. H. Tammsaare", 453, "romaan") >>> tõde_ja_õigus.kuva_info() Tõde ja õigus, A. H. Tammsaare, 453, romaan
Koosta klass nimega Raamatukogu
, mille konstruktoris luuakse tühi raamatute järjend. Klassis peavad olema järgmised meetodid:
- Meetod lisa_raamat, mis võtab argumendiks klassi
Raamat
isendi ja lisab selle raamatute järjendisse. - Meetod kuva_raamatud, mis kuvab meetodi kuva_info abil kõikide raamatukogus olevate raamatute info.
- Meetod laenuta_raamat, mille argumendiks on raamatu pealkiri sõnena. Pealkiri ei pea järgima korrektset suur- ja väiketähelisust. Meetod otsib raamatute järjendist üles selle pealkirjaga raamatu. Kui raamat leidub, siis eemaldab selle järjendist ja tagastab leitud raamatu isendi. Kui raamatut ei leidu, siis jätab järjendi samaks ning tagastab väärtuse
None
.
>>> rk = Raamatukogu() >>> rk.lisa_raamat(tõde_ja_õigus) >>> rk.kuva_raamatud() Raamatukogus olevad raamatud: Tõde ja õigus, A. H. Tammsaare, 453, romaan >>> raamat = rk.laenuta_raamat("TÕDE ja ÕIGUS") >>> raamat.pealkiri 'Tõde ja õigus'
Antud on fail nimega raamatud.txt, kus igal real on ühe raamatu andmed, eraldatult komadega:
Tõde ja õigus I, A. H. Tammsaare, 453, romaan Sherlock Holmesi seiklused, A. C. Doyle, 233, detektiiv Läänerindel muutuseta, E. M. Remarque, 310, romaan Punamütsike, Charles Perrault, 17, muinasjutt Eesriie, Agatha Christie, 98, detektiiv Suur Gatsby, F. Scott Fitzgerald, 188, romaan
Koosta põhiprogramm, mis loob klassi Raamatukogu
isendi, lisab sellesse kõik failis raamatud.txt olevad raamatud ning väljastab kõik raamatukogus olevad raamatud ekraanile. Seejärel küsib kasutajalt korduvalt raamatu pealkirja, mida ta laenutada soovib. Kui sellenimeline raamat on raamatukogus, siis laenutab selle ja väljastab uuesti kõik raamatukogus olevad raamatud. Kui raamatut raamatukogus ei ole, siis küsib kasutajalt raamatu nime uuesti, kuni kasutaja sisestab korrektselt mõne olemasoleva raamatu pealkirja.
Raamatukogus olevad raamatud: Tõde ja õigus I, A. H. Tammsaare, 453, romaan Sherlock Holmesi seiklused, A. C. Doyle, 233, detektiiv Läänerindel muutuseta, E. M. Remarque, 310, romaan Punamütsike, Charles Perrault, 17, muinasjutt Eesriie, Agatha Christie, 98, detektiiv Suur Gatsby, F. Scott Fitzgerald, 188, romaan Sisesta raamatu pealkiri, mida sa laenutada soovid: esi Ei leidnud sellist raamatut, proovi uuesti! Sisesta raamatu pealkiri, mida sa laenutada soovid: eesRiie Raamat Eesriie edukalt laenutatud! Raamatukogus olevad raamatud: Tõde ja õigus I, A. H. Tammsaare, 453, romaan Sherlock Holmesi seiklused, A. C. Doyle, 233, detektiiv Läänerindel muutuseta, E. M. Remarque, 310, romaan Punamütsike, Charles Perrault, 17, muinasjutt Suur Gatsby, F. Scott Fitzgerald, 188, romaan
2. Tõukerataste laenutus
Koosta klass nimega Tõukeratas
, mille konstruktori parameetriteks on tõukeratta laenutusfirma nimi, tõukeratta sõidualustustasu, tõukeratta 100 meetri hind ning tõukeratta sõidukaugus kilomeetrites.
Klassis peavad olema järgmised meetodid.
- Meetod sõidu_hind, millele antakse argumendiks sõidu pikkus kilomeetrites. Kui küsitud sõidupikkus ei ületa tõukeratta sõidukaugust, siis tagastab meetod vastava pikkusega sõidu hinna, arvestades tõukeratta sõidualustustasu ja 100 meetri hinda. Kui aga sõidupikkus ületab tõukeratta sõidukaugust, siis tagastab meetod arvu 1000.
- Meetod sõida, mis võtab argumendiks sõidu pikkuse ja lahutab selle sõidukaugusest maha. Juhul, kui tõukeratta sõidukaugus saab otsa, siis omistab sõidukauguse väljale väärtuse 0.
- Meetod lae, mille argumendiks on kilomeetrite arv ning mis suurendab tõukeratta sõidukaugust sellise arvu kilomeetrite võrra.
>>> bolt = Tõukeratas("Bolt", 1.5, 0.1, 20) >>> bolt.sõidu_hind(3) 4.5 >>> bolt.sõida(15) >>> bolt.lae(5) >>> bolt.sõidu_hind(15) 1000
Koosta klass nimega Laenutus
, mille konstruktori parameetriks on järjend klassi Tõukeratas
isenditest.
Klassis Laenutus
peavad olema järgmised meetodid.
- Meetod kuva_valik, mis võtab argumendiks sõidu pikkuse kilomeetrites ning väljastab ekraanile iga tõukeratta nime ja sõidu hinna, järjestades tõukerattad ülevalt alla, alustades odavaimast. Sõidu hinna leidmiseks kasuta meetodit sõidu_hind.
- Meetod laenuta, mis võtab argumendiks tõukeratta nime, millega kasutaja soovib sõita, ja sõidu pikkuse. Kui sõidu pikkus ei ületa tõukeratta sõidukaugust, siis väljastab sõidu hinna ja sõidab valitud tõukerattaga nii pika vahemaa (meetod sõida). Vastasel juhul aga väljastab asjakohase teate ning ei tee midagi.
- Meetod lae_tõukeratast, mis võtab argumendiks tõukeratta nime, mida soovitakse laadida, ning kilomeetrite arvu. Meetod suurendab vastava tõukeratta sõidukaugust küsitud arvu kilomeetrite võrra (meetod lae).
Lõpuks koosta programm, mis küsib kasutajalt kolme tõukeratta andmed:
- Bolt, 1.5, 0.1, 20
- Tuul, 1, 0.15, 18
- Bird, 0, 0.3, 34
Iga tõukeratta andmed sisestatakse ühe terve reana. Kõik kolm tõukeratast lisatakse klassi Laenutus
isendi tõukerataste järjendisse ja seejärel sooritatakse selle isendiga järgmised meetodite väljakutsed:
- kuva_valik(2)
- laenuta("Bolt", 3)
- laenuta("Tuul", 18)
- laenuta("Tuul", 5)
- lae_tõukeratast("Tuul", 5)
- laenuta("Tuul", 2)
Sisesta firma, alustustasu, saja meetri hind, sõidukaugus: Bolt, 1.5, 0.1, 20 Sisesta firma, alustustasu, saja meetri hind, sõidukaugus: Tuul, 1, 0.15, 18 Sisesta firma, alustustasu, saja meetri hind, sõidukaugus: Bird, 0, 0.3, 34 1. Bolt - 3.5 eurot 2. Tuul - 4.0 eurot 3. Bird - 6.0 eurot Sõidu hind oli 4.5 eurot Sõidu hind oli 28.0 eurot Tõukeratta aku on liiga tühi selle sõidu jaoks. Sõidu hind oli 4.0 eurot
Esita programmid
Esita ülesannete lahendused Moodle'i kaudu failidena kodu1.py ja kodu2.py.
Nõuanne
Programmeerimine on suure võimatu ülesande jagamine mitmeks väikeseks võimalikuks ülesandeks.