Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Zoo:
- def __init__(self, name: str, budget: int, animal_capacity: int, workers_capacity: int):
- self.name = name
- self.animals = []
- self.workers = []
- self.__budget = budget
- self.__animal_capacity = animal_capacity
- self.__workers_capacity = workers_capacity
- def add_animal(self, animal, price):
- enough_money = price <= self.__budget
- enough_space = len(self.animals) < self.__animal_capacity
- if enough_money and enough_space:
- self.animals.append(animal)
- self.__budget -= price
- return f'{animal.name} the {animal.__class__.__name__} added to the zoo'
- if not enough_money and enough_space:
- return 'Not enough budget'
- else:
- return 'Not enough space for animal'
- def hire_worker(self, worker):
- enough_space = len(self.workers) < self.__workers_capacity
- if enough_space:
- self.workers.append(worker)
- return f'{worker.name} the {worker.__class__.__name__} hired successfully'
- return 'Not enough space for worker'
- def fire_worker(self, worker_name):
- if worker_name in [w.name for w in self.workers]:
- worker = [w for w in self.workers if w.name == worker_name][0]
- self.workers.remove(worker)
- return f'{worker_name} fired successfully'
- return f'There is no {worker_name} in the zoo'
- def pay_workers(self):
- total_salaries = sum(w.salary for w in self.workers)
- if total_salaries <= self.__budget:
- self.__budget -= total_salaries
- left_budget = self.__budget
- return f'You payed your workers. They are happy. Budget left: {left_budget}'
- return 'You have no budget to pay your workers. They are unhappy'
- def tend_animals(self):
- total_expenses = sum([a.get_needs() for a in self.animals])
- if total_expenses <= self.__budget:
- self.__budget -= total_expenses
- left_budget = self.__budget
- return f'You tended all the animals. They are happy. Budget left: {left_budget}'
- return 'You have no budget to tend the animals. They are unhappy.'
- def profit(self, amount):
- self.__budget += amount
- def animals_status(self):
- lions = [a for a in self.animals if a.__class__.__name__ == 'Lion']
- tigers = [a for a in self.animals if a.__class__.__name__ == 'Tiger']
- cheetahs = [a for a in self.animals if a.__class__.__name__ == 'Cheetah']
- lions_info = '\n'.join([a.__repr__() for a in lions])
- tigers_info = '\n'.join([t.__repr__() for t in tigers])
- cheetahs_info = '\n'.join([c.__repr__() for c in cheetahs])
- return f'You have {len(self.animals)} animals\n----- {len(lions)} Lions:\n{lions_info}\n' \
- f'----- {len(tigers)} Tigers:\n{tigers_info}\n----- {len(cheetahs)} Cheetahs:\n{cheetahs_info}'
- def workers_status(self):
- keepers = [w for w in self.workers if w.__class__.__name__ == 'Keeper']
- keepers_info = '\n'.join([k.__repr__() for k in keepers])
- caretakers = [w for w in self.workers if w.__class__.__name__ == 'Caretaker']
- caretakers_info = '\n'.join([c.__repr__() for c in caretakers])
- vets = [w for w in self.workers if w.__class__.__name__ == 'Vet']
- vets_info = '\n'.join([v.__repr__() for v in vets])
- return f'You have {len(self.workers)} workers\n----- {len(keepers)} Keepers:\n{keepers_info}\n' \
- f'----- {len(caretakers)} Caretakers:\n{caretakers_info}\n----- {len(vets)} Vets:\n{vets_info}'
Advertisement
Add Comment
Please, Sign In to add comment