class State:
# Возможные состояния турникета
LOCKED = "ЗАКРЫТО"
UNLOCKED = "ОТКРЫТО"
class Action:
# Возможные действия
COIN = "ЖЕТОН"
PUSH = "НАЖАТЬ"
class Turnstile:
def __init__(self):
# Начальное состояние - заблокировано
self.state = State.LOCKED
# Таблица переходов состояний
# Формат: (текущее_состояние, действие): новое_состояние
self.transitions = {
(State.LOCKED, Action.COIN): State.UNLOCKED,
(State.LOCKED, Action.PUSH): State.LOCKED,
(State.UNLOCKED, Action.COIN): State.UNLOCKED,
(State.UNLOCKED, Action.PUSH): State.LOCKED
}
def process(self, action):
# Получаем новое состояние из таблицы переходов
new_state = self.transitions.get((self.state, action))
if new_state:
# Выводим результат действия
print(f"{self.state} → {new_state} | действие: {action}")
self.state = new_state
# Демонстрация работы
t = Turnstile()
t.process(Action.PUSH) # Останется LOCKED
t.process(Action.COIN) # Станет UNLOCKED
t.process(Action.COIN) # Останется UNLOCKED
t.process(Action.PUSH) # Станет LOCKED
Click Run or press shift + ENTER to run code