On 04/09/2010 18:58, Roy Smith wrote:
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.

I suppose that if they are that similar then you could generate the
code from a list or table of the states.
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to