53 lines
2.2 KiB
Python
53 lines
2.2 KiB
Python
class NoSuchStudentException(Exception):
|
||
"""Výnimka, ak žiak nemá v záhone pridelené políčka."""
|
||
pass
|
||
|
||
|
||
class Garden:
|
||
students = [
|
||
"Alena", "Boris", "Cyril", "Daniel", "Eva", "František",
|
||
"Gitka", "Helena", "Ivana", "Jozef", "Karol", "Ladislav"
|
||
]
|
||
plant_names = {
|
||
'V': 'Fialky',
|
||
'R': 'Reďkovky',
|
||
'C': 'Ďatelina',
|
||
'G': 'Tráva'
|
||
}
|
||
def __init__(self, diagram, students=None):
|
||
rows = diagram.splitlines() #ділимо на 2 рядки
|
||
top = rows[0]
|
||
bot = rows[1]
|
||
if students is None:
|
||
students = self.students #якшо нема списку то берем наш та сортуємо по абецеді
|
||
sorted_students = sorted(students)
|
||
#рахуємо для кожного учня його 4 полиички
|
||
cups = []
|
||
len_top = len(top)
|
||
len_bot = len(bot)
|
||
for i in range(0, len_top, 2):
|
||
top_part = top[i:i + 2] #беремо звеху 2(не індекс а к-сть елементів) і знизу 2
|
||
bot_part = bot[i:i + 2]
|
||
cup = top_part + bot_part
|
||
cups.append(cup)
|
||
#двємо горшочки з ківточками учням
|
||
self.plots = {}
|
||
l_cups = len(cups)
|
||
for i in range(l_cups):
|
||
if i >= len(sorted_students):
|
||
break #якшо горшків більше як учнів
|
||
student = sorted_students[i] # поточний студент 1
|
||
self.plots[student] = cups[i]
|
||
|
||
def plants(self, student):
|
||
if student not in self.plots: #чи такий учень існує
|
||
raise NoSuchStudentException(f"Žiak {student} nemá políček.")
|
||
|
||
#дефінуєм 4 букви учня
|
||
allfourleters = self.plots[student] # букви назарчика
|
||
result = [] #кожна буква це рослина беремо її з словника і додаємо в результат
|
||
for i in allfourleters:
|
||
plant = self.plant_names[i]
|
||
result.append(plant)
|
||
|
||
return result |