Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Ülesanded
- 01. odd_index_sum (50p)
- Kirjuta funktsioon, mis tagastab paarituarvuliste indeksiga elementide summa. Ehk siis liidetakse kokku elemendid indeksil 1, 3, jne.
- 02. encode_string_with_hex_key (50p)
- Funktsioon saab sisendiks sõne ja võtme, mille järgi sõne krüpteerida.
- Krüpteerimine käib nii, et input_str iga täht (Numbrid ja tühikud ei loe) tuleb asendada nii mitme võrra järgmise tähega kui key-s vastaval positsioonil märgitud on. Key on hex, ehk 0-f, kus 0 = 0 ja f = 15 (kümnendsüsteemis). Mõlemad sõned on sama pikkusega. Ladina tähed tuleb nihutada, kõik muud sümbolid jäävad samaks. Suured tähed peavad ka peale nihutamist olema suured (ainult väikeste tähtedega lahendus annab 80%).
- 03. who_gets_gingerbread (50p)
- Funktsioon saab sisendiks sõnastiku kujul {tudengi_nimi: keskmine hinne} ning piparkookide arvu, kui palju päkapikudel on plaanis praegu jagada.
- Päkapikud soovivad jagada tudengite vahel piparkooke. Piparkooke jagadakse ühekaupa igale tudengile, aga sellisel tingimusel, et esimesena saavad piparkoogi need tundengid, kelle keskmine hinne on kõrgem. Lisaks, päkapikud on päris ranged - tudengid, kelle keskmine hinne on väiksem-võrdne kui 2.0 (kaasa arvatud),
- ei saa üldse piparkooke.
- Tagastada tuleb sõnastik tudengitega ja piparkookide arvuga, kui palju igaüks saab. Arvesse lähevad ainult need tudengid, kellel on vähemalt 1 piparkook lõpuks saadud (kui tagastada ka 0 kogusega tudengid, saab kuni 80%).
- Näiteks:
- students = {
- 'Mart': 4.0,
- 'Kristi': 4.5,
- 'Kevin': 3.2,
- 'Markus': 2.0
- }
- total_gingerbreads = 11
- Sisendandemte järgi on näha, et Markus jääb ilma piparkookideta ning järelikult ei satu lõpliku sõnastiku sisse. Järjekord, milles tudengid hakkavad piparkooke saama, on järgmine - Kristi, Mart, Kevin. Kui päkapikud jagavad 11 piparkooki, siis kõigepealt saab ühe Kristi, siis Mart ja siis Kevin. Päkapikud jätkavad samamoodi kuni piparkoogid on otsas. Lõpuks saame:
- result_students = {
- 'Kristi': 4,
- 'Mart': 4,
- 'Kevin': 3
- }
- 04. tuple_of_tuples (50p)
- Funktsioon saab sisendiks listi listidest. Listide sees võivad olla täisarvud. Funktsioon peab väljastama enniku ennikutest nii, et sisendiks oleva listi struktuur ei muutu aga kõik listid on nüüd ennikud (tuple).
- Näide: convert_list([1, 2, [1, 2, 5, [5, 2, 1], [5, [3, 6, 87]]], 4, [34, 2, [63, 5]]]) => (1, 2, (1, 2, 5, (5, 2, 1), (5, (3, 6, 87))), 4, (34, 2, (63, 5)))
- Siin ülesandes pead kasutama rekursiooni! Tsükli kasutamine on lubatud ühe listi elementide läbimisel (n-ö ühel tasandil, sügavuti liikumiseks on vaja kasutada rekursiooni).
- 05. make_table (100p)
- Funktsioon saab sisendiks paaritu täisarvu n, mille väärtus on vähemalt 7. Tagasta n*n suurune tabel, mis on jaotatud neljaks võrdseks osaks - iga osa ristiga (vaata näidet).
- Rist koosneb sümbolitest: \ (Pythonis tuleb kirjutada: "\\") ja / ja vajadusel X (suur "x"). Tabelis on neli võrdset osa. Tabeli veerud (vasakult paremale) on eraldatud | (püstkriips) sümboliga, tabeli read (üleval alla) - (miinus) sümboliga, keskel on + (pluss).
- Siin võib abiks olla, kui mõelda, et tabel koosneb neljast võrdsest osast.
- 06. University (50p)
- Sinu ülesanneks on realiseerida primitiivne ülikooli infosüsteem.
- class Student
- __init__(self, name: str, gpa: float, age: int) - konstruktor, mis määrab tudengile nime, gpa (Grade Point Average ehk keskmise hinde) ja vanuse.
- class Univerity
- __init__(self, name: str, gpa_required: float, books_required: int) - konstruktor, mis määrab ülikoolile nime ja minimaalse gpa, mida on tudengil vaja sisse astumiseks.
- can_enroll_student(self, student: Student) - meetod, mis kontrollib, kas antud tudeng võib ülikooli astuda. Tagastab tõeväärtuse.
- Tudeng võib edukalt ülikooli astuda juhul kui:
- tudengi enda gpa ei ole ülikooli gpa_required väärtusest väiksem
- tudengit ei ole juba ülikoolis olemas.
- tudeng on vähemalt 16 aastat vana
- kui aga tudengi nime pikkus (tähtede arv) on täpselt 13, siis tudeng saab ülikooli astuda vaatamata tema gpa väärtusele (ehk saab ka madalama keskmise hindega sisse).
- Funktsioon tagastab True, kui tudengit saab ülikooli lisada, ja False vastasel juhul.
- enroll_student(self, student: Student) - meetod, mis lisab tudengi ülikooli, kui see on võimalik. Enne lisamist tuleb kontrollida, kas lisamine on võimalik. Meetod ei tagasta midagi.
- can_unenroll_student(self, student: Student) - meetod, mis kontrollib, kas antud tudengit võib ülikoolist kustutada. Kustutada saab, siis kui tudeng on ülikoolis olemas. Tagastab vastava tõeväärtuse.
- unenroll_student(self, student: Student) - meetod, mis kustutab tudengi ülikooli nimekirjast, kui see on võimalik. Enne kustutamist kontrollitakse, kas kustutamine on võimalik. Meetod ei tagasta midagi.
- get_students(self) - meetod, mis tagastab järjendi selles ülikoolis õppivate tudengitega.
- get_student_highest_gpa(self) - meetod, mis tagastab järjendi tudengitega (tudengiga), kellel on suurim gpa selles ülikoolis.
- 07. Car Dealership (150p)
- Realiseeri autopoe infosüsteem ja simuleeri autode müümist klientidele.
- Klass: Accessory
- Accessory on autole väärtust juurde andev lisavarustus.
- __init__(self, name: str, value: int) - Konstruktor, mis annab lisavarustusele nime ja väärtuse.
- __repr__(self) - Objekti printimist ilustav meetod, peab tagastama stringi kujul: {nimi}, value : {value}.
- Lisavarustuse value on alati täisarv, ja name antakse alati stringina, selle jaoks kontrolli vaja teha ei ole.
- Klass: Car
- Auto ehk Car võib olla lisavarustusega. Autol on nimi ja kindel värv.
- __init__(self, name: str, color: str) - Konstruktor, mis annab autole nime ja kerevärvi. Värskelt loodud autol on paak täis (100%).
- add_accessory(self, accessory)- Meetod, mis lubab autole lisavarustust lisada.
- get_value(self) - Meetod, mis arvutab auto lisavarustuse väärtused kokku ning lisab baashinna, mis saab auto väärtuseks. Tavalise auto baashind on 9500€ ja kvaliteetauto baashind on 42500€
- get_fuel_left(self) - Meetod, mis tagastab auto kütusekoguse protsentidena (0-100).
- get_accessories_by_value(self) - Meetod, mis tagastab listina autol oleva lisavarustuse, sorteerituna väärtuse järgi kahanevas järjekorras.
- __repr__(self) - Objekti printimist ilustav meetod, peab tagastama stringi kujul: This {color} {name} contains {accessory_amount} accessories and has {fuel}% fuel left.
- Klass: Customer
- Klient on see, kes autot ostma läheb.
- __init__(self, name: str, wish: str) - Konstruktor, mis annab kliendile nime ja paneb stringina kirja tema soovid.
- Soov koosneb kahest sõnast, esimene sõna on kas Cheap või Expenisve ja tähistab, kas klient tahab soodsamat ehk väikseima value-ga, või kallimat, ehk kalleima value-ga tavalist autot. Kui nii soodsaim kui kalleim auto on sama auto, siis täpselt selle auto klient ostabki, vaatamata oma hinnasoovile.
- Teine sõna on värv, mis tähistab kliendi soovi seoses auto värviga. Klient ei taha kunagi teise värviga autot.
- Premium klientidele peab kõigepealt otsima sobiva värviga auto Premium autode seast, kui seal sobivaid autosid ei ole, siis tuleb talle müüa kõige odavam Premium auto.
- Kliendi soovi näide: "Cheap Blue", "Expensive Yellow".
- get_garage(self) - Meetod, mis tagastab listina kõik kliendi ostetud autod, sorteerituna auto väärtuse järgi kasvavas järjekorras. Klient kvaliteetsetel ja tavalistel autodel vahet ei tee ja paneb nad kõik ühte garaaži.
- make_premium(self) - Meetod, mis muudab Customer-i Premium-iks, ja talle võib nüüd kvaliteetautosid müüa.
- drive_with_car(self, driving_style: str)- Meetod, mille väljakutsumise peale läheb klient autoga sõitma. Customer eelistab autot, millel on kõige rohkem kütust. Kui mitmel autol on sama palju kütust, siis valitakse kõige kallim nende hulgast.
- Kui meetodiga kaasa antud driving_style on Rally, võtab Customer kõige odavama auto, mis ta omab.
- Tavaline sõitmine kulutab 15% paagi mahust, aga Rally võtab 35%. (85% - 35% => 50%).
- Kui sõitmise käigus saab kütus otsa, jätab Customer selle auto maha ja enam seda autot garaaži ei too.
- Klass: Dealership
- Dealership on tore kohalik automüüja, kellel on palju erinevaid autosid.
- __init__(self, name: str) - Konstruktor, mis annab automüüjale nime.
- add_car(self, car: Car) - Meetod, mille abil lisatakse auto Dealership-i inventuuri.
- get_all_regular_cars(self) - Meetod, mis tagastab listina kõik tavalised autod, sorteerituna auto väärtuse järgi kasvavas järjekorras.
- make_car_premium(self, car: Car) - Meetod, mis muudab Car-i kvaliteetseks. Kvaliteet Car-e võib müüa ainult Premium Customer-idele.
- get_all_premium_cars(self) - Meetod, mis tagastab listina kõik kvalieetautod, sorteerituna auto väärtuse järgi kasvavas järjekorras.
- sell_car_to_customer(self, customer: Customer) - Meetod, mis müüb vastavalt Customer-i soovidele talle sobiva auto. Auto peab Dealership-i nimekirjast ära kaduma ja tekkima Customer-i garaaži.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement