u5
This commit is contained in:
parent
6bf02bf9e6
commit
c8bb132585
38
u5/kindergarten_garden.py
Normal file
38
u5/kindergarten_garden.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
def bidirectional_dict(d: dict) -> dict:
|
||||||
|
for k, v in list(d.items()):
|
||||||
|
d[v] = k
|
||||||
|
return d
|
||||||
|
|
||||||
|
|
||||||
|
class NoSuchStudentException(Exception):
|
||||||
|
"""Raised when plants are requested for a student not assigned a plot."""
|
||||||
|
|
||||||
|
class Garden:
|
||||||
|
PLANTS = bidirectional_dict({
|
||||||
|
"Tráva": "G",
|
||||||
|
"Ďatelina": "C",
|
||||||
|
"Reďkovky": "R",
|
||||||
|
"Fialky": "V"
|
||||||
|
})
|
||||||
|
|
||||||
|
students = {}
|
||||||
|
|
||||||
|
rows: list[str]
|
||||||
|
|
||||||
|
|
||||||
|
def __init__(self, seq: str, students: list[str] = ["Alena", "Boris", "Cyril", "Daniel", "Eva", "František", "Gitka", "Helena", "Ivana", "Jozef", "Karol", "Ladislav"]):
|
||||||
|
self.rows = seq.split("\n")
|
||||||
|
if students is not None:
|
||||||
|
self.students = {name: "" for name in sorted(students)}
|
||||||
|
self.parse()
|
||||||
|
|
||||||
|
def parse(self):
|
||||||
|
for row in self.rows:
|
||||||
|
for x in range(0, len(row), 2):
|
||||||
|
self.students[list(self.students.keys())[x//2]] += row[x:x+2]
|
||||||
|
|
||||||
|
def plants(self, name: str) -> list:
|
||||||
|
student_plants = self.students.get(name)
|
||||||
|
if student_plants is None:
|
||||||
|
raise NoSuchStudentException(f"Student {name} is not assigned a plot.")
|
||||||
|
return [self.PLANTS.get(c) for c in student_plants]
|
||||||
Loading…
Reference in New Issue
Block a user