Wijaya Edward wrote: > Can we make loops control in Python? > What I mean is that whether we can control > which loops to exit/skip at the given scope. > > For example in Perl we can do something like: > > OUT: > foreach my $s1 ( 0 ...100) { > > IN: > foreach my $s2 (@array) { > > if ($s1 == $s2) { > next OUT; > } > else { > last IN; > } > > } > } > > How can we implement that construct with Python? >
Python does not use Labels. If you want to quit a single loop then look up the Python break statement. If you want to exit deeply nested execution then Python has exceptions. this maybe new to a Perl programmer so please take time to understand Python exceptions. There follows a function that you can call from an interactive session to explore one type of use for exceptions that is rather like your use of Perl labels shown. ========================== class Outer(Exception): pass class Inner(Exception): pass def skip_loops(y1 = -1, y2 = -1, y3 = -1): ''' Shows how to skip parts of nested loops in Python''' try: for x0 in range(3): try: for x1 in range(3): for x2 in range(3): if x2 == y2: raise Inner if x2 == y3: break print (x0,x1,x2) if x1 == y1: raise Outer print (x0,x1) except Inner: print "Raised exception Inner" print (x0,) except Outer: print "Raised exception Outer" ========================== >>> skip_loops(y1=2) (0, 0, 0) (0, 0, 1) (0, 0, 2) (0, 0) (0, 1, 0) (0, 1, 1) (0, 1, 2) (0, 1) (0, 2, 0) (0, 2, 1) (0, 2, 2) Raised exception Outer >>> skip_loops(y2=2) (0, 0, 0) (0, 0, 1) Raised exception Inner (0,) (1, 0, 0) (1, 0, 1) Raised exception Inner (1,) (2, 0, 0) (2, 0, 1) Raised exception Inner (2,) >>> - Paddy. P.S. Welcome to Python! -- http://mail.python.org/mailman/listinfo/python-list