avp26/u5/kindergarten_garden.py
2026-10-13 17:21:41 +02:00

53 lines
2.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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