[Tutor] Please critique my Fraq.py (original) (raw)
Dick Moores rdm at rcblue.com
Sun Jul 25 14:23:18 CEST 2004
- Previous message: [Tutor] Please critique my Fraq.py
- Next message: [Tutor] Please critique my Fraq.py
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
At 04:59 7/25/2004, Alan Gauld wrote:
> In Frac.py I wanted to give the user a chance to quit at any prompt (and > have the program close smoothly), by entering a "q" or an "x". I did > this by the statement, > > if answer in ["q", "x"]: > break
if answer in "qxQX": break
I'm happy to learn another way. I suppose I could do this with all types of sequences.
is probably neater - to my eyes anyway, certainly less storage although thats not likely to be an issue! :-)
> The problem with this is that it only breaks out of the inner loop. I > have to repeat this statement in the outer loop. > > So I'm asking if there's a better way. Raising an exception doesn't do > it. Why does raising SystemExit not do it? In particular if you move all cleanup code - closing files etc into a try/finally block the exception route is the preferred method.
How about Brian van den Broek's suggestion of about an hour ago, of using sys.exit(). That does what I was after, if I execute at the XP command line. With IDLE, it doesn't.
> Is there a way (other than mine) to enable the user to quit smoothly > when he's inside a loop which is inside a loop?
Nope, an exception is the only reliable way to jump out of nested loops.
Could you explain what you mean by reliable? For the problem I posed, one answer is to use sys.exit().
It could be SystemExit to quit the program or it could be a user defined one
class LoopExit(exception): pass try: while True: while True: try: raise LoopBreak finally: print "Done!" except LoopBreak: print "I escaped!"
I'll give your suggestion a try, but I don't understand classes yet.
Thanks very much,
Dick
- Previous message: [Tutor] Please critique my Fraq.py
- Next message: [Tutor] Please critique my Fraq.py
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]