# Desktop Python teaching example. Numerical inputs are illustrative.
def next_state(state, event):
    if event in {"operator_stop", "invalid", "timeout"}:
        return "STOPPED"
    transitions = {("FORWARD", "contact"): "STOPPED",
                   ("STOPPED", "recover"): "BACKUP",
                   ("BACKUP", "done"): "TURN",
                   ("TURN", "done"): "STOPPED"}
    return transitions.get((state, event), state)

state = "FORWARD"
for event in ["contact", "recover", "done", "operator_stop"]:
    state = next_state(state, event)
    print(event, state)
