Python Forum

Full Version: Confused by 'break' in the official documents
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Found these examples in the documentation.Was looking up For/Else loops. They both use a break statement. Was a bit confused why the break statement was there so ran them both without the break statements and the output is the same! So why have them?

Example 1.
for n in range(2, 10):
    for x in range(2, n):
        if n % x == 0:
            print(n, 'equals', x, '*', n/x)
            break
Example 2 - which is adding an else statement to the above (which I get)

for n in range(2, 10):
     for x in range(2, n):
         if n % x == 0:
             print(n, 'equals', x, '*', n//x)
             break
     else:
         # loop fell through without finding a factor
         print(n, 'is a prime number')
(Apr-12-2020, 06:22 PM)Chuck_Norwich Wrote: [ -> ]so ran them both without the break statements and the output is the same!
That is not true, the output is different.

First snippet, with break:
Output:
4 equals 2 * 2.0 6 equals 2 * 3.0 8 equals 2 * 4.0 9 equals 3 * 3.0
First snippet, without break:
Output:
4 equals 2 * 2.0 6 equals 2 * 3.0 6 equals 3 * 2.0 8 equals 2 * 4.0 8 equals 4 * 2.0 9 equals 3 * 3.0
There are 2 extra lines.

break serve to break out (i.e. terminate the execution) of the loop early. In the example - 6 is evenly divisible by 2, so there is no need to continue searching for other divisors, obviously it's not prime number.


Now, in the second snippet you have also extra else clause. If the loop exection finishes normally (i.e. not from break) this will be executed.

Output:
2 is a prime number 3 is a prime number 4 equals 2 * 2 5 is a prime number 6 equals 2 * 3 7 is a prime number 8 equals 2 * 4 9 equals 3 * 3
if not clear, look at this step by step execution
ok. Yes.Thanks.

The visualise Python site is perfect!