Am 26.09.18 um 12:28 schrieb Bart:
On 26/09/2018 10:10, Peter Otten wrote:
     class Break(Exception):
         pass

     try:
         for i in range(10):
             print(f'i: {i}')
             for j in range(10):
                 print(f'\tj: {j}')
                 for k in range(10):
                     print(f'\t\tk: {k}')

                     if condition(i, j, k):
                         raise Break
     except Break:
         pass


For all such 'solutions', the words 'sledgehammer' and 'nut' spring to mind.

Remember the requirement is very simple, to 'break out of a nested loop' (and usually this will be to break out of the outermost loop). What you're looking is a statement which is a minor variation on 'break'.

Which is exactly what it does. "raise Break" is a minor variation on "break".

Not to have to exercise your imagination in devising the most convoluted code possible.

To the contrary, I do think this solution looks not "convoluted" but rather clear. Also, in Python some other "exceptions" are used for a similar purpose - for example "StopIteration" to signal that an iterator is exhausted. One might consider to call these "signals" instead of "exceptions", because there is nothing exceptional, apart from the control flow.

        Christian


--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to