Advertisement
UniQuet0p1

Untitled

Jan 13th, 2021
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.96 KB | None | 0 0
  1. Ülesanded
  2. 01. odd_index_sum (50p)
  3. Kirjuta funktsioon, mis tagastab paarituarvuliste indeksiga elementide summa. Ehk siis liidetakse kokku elemendid indeksil 1, 3, jne.
  4.  
  5. 02. encode_string_with_hex_key (50p)
  6. Funktsioon saab sisendiks sõne ja võtme, mille järgi sõne krüpteerida.
  7. 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%).
  8.  
  9. 03. who_gets_gingerbread (50p)
  10. Funktsioon saab sisendiks sõnastiku kujul {tudengi_nimi: keskmine hinne} ning piparkookide arvu, kui palju päkapikudel on plaanis praegu jagada.
  11.  
  12. 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),
  13. ei saa üldse piparkooke.
  14.  
  15. 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%).
  16.  
  17. Näiteks:
  18.  
  19. students = {
  20. 'Mart': 4.0,
  21. 'Kristi': 4.5,
  22. 'Kevin': 3.2,
  23. 'Markus': 2.0
  24. }
  25. total_gingerbreads = 11
  26. 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:
  27.  
  28. result_students = {
  29. 'Kristi': 4,
  30. 'Mart': 4,
  31. 'Kevin': 3
  32. }
  33. 04. tuple_of_tuples (50p)
  34. 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).
  35.  
  36. 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)))
  37.  
  38. 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).
  39.  
  40. 05. make_table (100p)
  41. 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).
  42.  
  43. 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).
  44.  
  45. Siin võib abiks olla, kui mõelda, et tabel koosneb neljast võrdsest osast.
  46.  
  47. 06. University (50p)
  48. Sinu ülesanneks on realiseerida primitiivne ülikooli infosüsteem.
  49.  
  50. class Student
  51.  
  52. __init__(self, name: str, gpa: float, age: int) - konstruktor, mis määrab tudengile nime, gpa (Grade Point Average ehk keskmise hinde) ja vanuse.
  53. class Univerity
  54.  
  55. __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.
  56.  
  57. can_enroll_student(self, student: Student) - meetod, mis kontrollib, kas antud tudeng võib ülikooli astuda. Tagastab tõeväärtuse.
  58.  
  59. Tudeng võib edukalt ülikooli astuda juhul kui:
  60.  
  61. tudengi enda gpa ei ole ülikooli gpa_required väärtusest väiksem
  62. tudengit ei ole juba ülikoolis olemas.
  63. tudeng on vähemalt 16 aastat vana
  64. 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).
  65. Funktsioon tagastab True, kui tudengit saab ülikooli lisada, ja False vastasel juhul.
  66.  
  67. 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.
  68.  
  69. 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.
  70.  
  71. 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.
  72.  
  73. get_students(self) - meetod, mis tagastab järjendi selles ülikoolis õppivate tudengitega.
  74.  
  75. get_student_highest_gpa(self) - meetod, mis tagastab järjendi tudengitega (tudengiga), kellel on suurim gpa selles ülikoolis.
  76.  
  77. 07. Car Dealership (150p)
  78. Realiseeri autopoe infosüsteem ja simuleeri autode müümist klientidele.
  79.  
  80. Klass: Accessory
  81. Accessory on autole väärtust juurde andev lisavarustus.
  82.  
  83. __init__(self, name: str, value: int) - Konstruktor, mis annab lisavarustusele nime ja väärtuse.
  84.  
  85. __repr__(self) - Objekti printimist ilustav meetod, peab tagastama stringi kujul: {nimi}, value : {value}.
  86.  
  87. Lisavarustuse value on alati täisarv, ja name antakse alati stringina, selle jaoks kontrolli vaja teha ei ole.
  88.  
  89. Klass: Car
  90. Auto ehk Car võib olla lisavarustusega. Autol on nimi ja kindel värv.
  91.  
  92. __init__(self, name: str, color: str) - Konstruktor, mis annab autole nime ja kerevärvi. Värskelt loodud autol on paak täis (100%).
  93.  
  94. add_accessory(self, accessory)- Meetod, mis lubab autole lisavarustust lisada.
  95.  
  96. 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€
  97.  
  98. get_fuel_left(self) - Meetod, mis tagastab auto kütusekoguse protsentidena (0-100).
  99.  
  100. get_accessories_by_value(self) - Meetod, mis tagastab listina autol oleva lisavarustuse, sorteerituna väärtuse järgi kahanevas järjekorras.
  101.  
  102. __repr__(self) - Objekti printimist ilustav meetod, peab tagastama stringi kujul: This {color} {name} contains {accessory_amount} accessories and has {fuel}% fuel left.
  103.  
  104. Klass: Customer
  105. Klient on see, kes autot ostma läheb.
  106.  
  107. __init__(self, name: str, wish: str) - Konstruktor, mis annab kliendile nime ja paneb stringina kirja tema soovid.
  108.  
  109. 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.
  110.  
  111. Teine sõna on värv, mis tähistab kliendi soovi seoses auto värviga. Klient ei taha kunagi teise värviga autot.
  112.  
  113. 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.
  114.  
  115. Kliendi soovi näide: "Cheap Blue", "Expensive Yellow".
  116.  
  117. 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.
  118.  
  119. make_premium(self) - Meetod, mis muudab Customer-i Premium-iks, ja talle võib nüüd kvaliteetautosid müüa.
  120.  
  121. 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.
  122.  
  123. Kui meetodiga kaasa antud driving_style on Rally, võtab Customer kõige odavama auto, mis ta omab.
  124. Tavaline sõitmine kulutab 15% paagi mahust, aga Rally võtab 35%. (85% - 35% => 50%).
  125. Kui sõitmise käigus saab kütus otsa, jätab Customer selle auto maha ja enam seda autot garaaži ei too.
  126. Klass: Dealership
  127. Dealership on tore kohalik automüüja, kellel on palju erinevaid autosid.
  128.  
  129. __init__(self, name: str) - Konstruktor, mis annab automüüjale nime.
  130.  
  131. add_car(self, car: Car) - Meetod, mille abil lisatakse auto Dealership-i inventuuri.
  132.  
  133. get_all_regular_cars(self) - Meetod, mis tagastab listina kõik tavalised autod, sorteerituna auto väärtuse järgi kasvavas järjekorras.
  134.  
  135. make_car_premium(self, car: Car) - Meetod, mis muudab Car-i kvaliteetseks. Kvaliteet Car-e võib müüa ainult Premium Customer-idele.
  136.  
  137. get_all_premium_cars(self) - Meetod, mis tagastab listina kõik kvalieetautod, sorteerituna auto väärtuse järgi kasvavas järjekorras.
  138.  
  139. 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