U5
This commit is contained in:
parent
7c30fcdbc0
commit
ca38589028
53
u5/kindergarten_garden.py
Normal file
53
u5/kindergarten_garden.py
Normal file
@ -0,0 +1,53 @@
|
||||
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 + 1] #беремо звеху 2(не індекс а к-сть елементів) і знизу 2
|
||||
bot_part = bot[i:i + 1]
|
||||
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
|
||||
Loading…
Reference in New Issue
Block a user