[Tutor] How many loops does "break" jump out of?

etrade.griffiths at dsl.pipex.com etrade.griffiths at dsl.pipex.com
Thu Feb 22 18:39:20 CET 2007


Am trying to convert a C program with a GOTO in it to Python and was wondering 
how many loops a Python "break" jumps out of.  Here is the C pseudo code

if (test_1) {
    for (;;) {
        if (test_2) {
            do_stuff();
        } else if (test_2) {
            for (ip=m1+m2+1;ip<=m;ip++) {
                if (test_3) {
                    do_more_stuff();
                    if (test_4)
                        goto one;
                }
            }
            for (i=m1+1;i<=m1+m2;i++)
                do_even_more_stuff();
                
            do_yet_more_stuff();
        }
        
        do_final_stuff();
        
one:    continue_program();

Python version 1 - assumes break jumps out of outer enclosing loop

if (test_1):
    while 1:
        if (test_2):
            do_stuff()
        elif (test_2):
            for ip in range(m1+m2+1, m):
                if (test_3):
                    do_more_stuff()
                    if (test_4):
                        break
            for i in range(m1+1, m1+m2):
                do_even_more_stuff()
                
            do_yet_more_stuff()
        }
        
        do_final_stuff()
        
    continue_program()    # one (break jumps out of while loop to here)
    
Python version 2 - assumes break jumps out of inner loop only.

if (test_1):
    while 1:
        if (test_2):
            do_stuff()
        elif (test_2):
            for ip in range(m1+m2+1, m):
                if (test_3):
                    do_more_stuff()
                    if (test_4):
                        quit_loop = true
                        break    # jump out of for loop

            if quit_loop:
                break:           # jump out of if test

            for i in range(m1+1, m1+m2):
                do_even_more_stuff()
                
            do_yet_more_stuff()
        }
        
        # break jumps out of if loop to here
        
        if quit_loop:
            break    # jump out of while loop
            
        do_final_stuff()
        
    continue_program()    # one    
   
Python version 3 - assumes break jumps out of for loop only.

if (test_1):
    while 1:
        if (test_2):
            do_stuff()
        elif (test_2):
            for ip in range(m1+m2+1, m):
                if (test_3):
                    do_more_stuff()
                    if (test_4):
                        quit_loop = true
                        break    # jump out of for loop

            for i in range(m1+1, m1+m2):
                do_even_more_stuff()
                
            do_yet_more_stuff()
        }
        
        # break jumps out of for loop to here
        
        if quit_loop:
            break    # jump out of while loop
            
        do_final_stuff()
        
    continue_program()    # one    

Unfortunately, can't test the Python script against the C program 'cos I don't 
have a C compiler.  All commments gratefully received


More information about the Tutor mailing list