do-while loop?
Tom Funk
_spam_sux_tdfunk at _spam_sux_nettally.com
Thu Mar 23 23:25:29 EST 2000
In an article posted Fri, 24 Mar 2000 02:57:44 +0000,
Peter Bittner (bittneph at aston.ac.uk) said:
> I'm missing a 'do-while' statement in Python.
Alx and Charles are both correct, but I recently discovered something
that makes this approach problematic: how to get out of nested loops. In
cases where I'm nesting loops, I've taken to using something like this:
from exceptions import Exception
class Break(Exception):
"Used to break out of nested loops"
pass
try:
while 1:
commands = get_cmd_input()
for cmd,arg in commands:
if cmd == "quit":
raise Break, "Command processor terminated"
elif cmd == "#":
print "ignored: " + arg # get more commands
break
elif not valid_cmd(cmd):
print "invalid: " + cmd # get more commands
break
else:
status = exec_cmd(cmd, arg)
if status == unrecoverable_error:
# can't continue
raise Break, "error: %s %s" % (cmd, arg)
except Break, msg:
print msg
This approach will let you break out of any number of nested loops --
though anything deeper than about four or so will likely lead to nesting
function calls for readability. The alternative is to set some condition,
test it in the inner loop, break out of that loop and test it again in
the next-outer loop and the next, and the next....
Fwiw, I'm missing a multi-way branch statement (switch/case, select/case,
etc.). Small price to pay....<g>
--
-=< tom >=-
Thomas D. Funk | "Software is the lever
Software Engineering Consultant | Archimedes was searching for"
Advanced Systems Design, Tallahassee FL. |
More information about the Python-list
mailing list