how about:
for something in some_iterable:
some_stuff_with_maybe_a_break
else if not break:
something_more
No new keywords :-)
or:
for something in some_iterable:
some_stuff_with_maybe_a_break
else: # if not break:
something_more
and no changes needed to Python!
I may actually start doing that myself ...
As for the "loop didn't run at all" case: Does anyone find a need for that? Personally, I've found that everytime I do some kind of check for an empty iterable before a loop, it was totally unnecessary.
A for loop means: "Do this stuff to all the items in this iterable."
Most of the time, if there's nothing there, you don't need to do the stuff, and that's that.
-CHB