The most intuitive way of building and implementing Finite State Machines is by using Python Coroutines and in this article, we find how and why.