Hello, I think adding an optional "WHILE" clause in "FOR" loops might be useful sometimes (shorter code and/or improved readability): for #VAR# in #SEQUENCE# while #WATCHDOG_EXPRESSION#: #CODE_BLOCK# Examples: keepRunning = True for i in range(100) while keepRunning: keepRunning = do_some_work( i ) found = False for candidate in sequence while not found: try: process( candidate ) found = True except InvalidCandidate: pass retryCount = 7 for i in range(1,1+retryCount) while resource.acquire() == FAIL: sleep( i**2 ) At the moment, I usually implement this either with ugly breaks: for i in range(100): if not do_some_work( i ): break found = False for candidate in sequence: try: process_candidate() except InvalidCandidate: pass else: found = True break Or with while loops and counters (or counting-like expressions): i = 1 while i <= retryCount and not resource.acquired: if resource.acquire() == FAIL: sleep( i**2 ) i += 1 Of course, actual code tends to be more complex, with "keepRunning" being modified in some branches of "IF" blocks, and there might be nested loops where the exit condition for the outer one is set in the inner loop. Compare these two examples: found = False for filePath in glob( '*.data' ): for line in open( filePath, 'rt' ): if line.startswith( '#' ): continue if handle( line ): found = True break if found: break found = False for filePath in glob( '*.data' ) while not found: for line in open( filePath, 'rt' ) while not found: if line.startswith( '#' ): continue if handle( line ): found = True -- Alejandro