I've made the code raise an Exception if the success_condition is False.

As for the `else` clause, it's a [little-known feature of Python's `for` loop](http://docs.python.org/2/reference/compound_stmts.html#grammar-token-for_stmt). When the items to be iterated over are exhausted (which is immediately when the sequence is empty), the suite in the `else` clause, if present, is executed just before the loop terminates. It seemed appropriate, although in this case, I agree that the `else` can probably just be dropped.