In article <mailman.443.1283608243.29448.python-l...@python.org>, "D'Arcy J.M. Cain" <da...@druid.net> wrote:
> On Sat, 4 Sep 2010 14:36:38 +0100 > Jack Keegan <whatsjacksem...@gmail.com> wrote: > > Just joined the group. I'm new to Python but been picking it up pretty easy. > > Welcome aboard. > > > As there is no switch statement in Python, I've been looking around for a > > good implementation. Most of the algorithms I've come across seem to be > > There's no switch statement because there's no real need for one. > Check out the following sample code and see if it gives you some ideas. > > #! /usr/bin/env python > # -*- coding: utf-8 -*- > > # Sample state machine > > import sys > > data = dict(counter = 0, flag = False) > > def state1(d): > d['counter'] += 1 > print "In state 1, counter = %(counter)d" % d > if d['flag']: sys.exit(0) > return state2 > > def state2(d): > d['counter'] += 1 > print "In state 2, counter = %(counter)d" % d > return state3 > > def state3(d): > d['counter'] += 1 > d['flag'] = True > print "In state 3, counter = %(counter)d" % d > return state1 > > state = state1 > while True: > state = state(data) This is the pattern I've always used. Simple and effective for any state machine which is small enough to code by hand. I generally have my state methods return (next_state, output) tuples, but that's a detail. -- http://mail.python.org/mailman/listinfo/python-list