I’m at the very beginning with Python so my knowledge is quite noob level.
Anyway, I have found this example online:
for num in range(10,20): #to iterate between 10 to 20 for i in range(2,num): #to iterate on the factors of the number if num%i == 0: #to determine the first factor j=num/i #to calculate the second factor print(f"{num} equals {i} * {j}") break #to move to the next number, the #first FOR else: # else part of the loop print(f"{num} is a prime number") break
Here the result from the example:
10 equals 2 * 5 11 is a prime number 12 equals 2 * 6 13 is a prime number 14 equals 2 * 7 15 equals 3 * 5 16 equals 2 * 8 17 is a prime number 18 equals 2 * 9 19 is a prime number
Unfortunately by running that code on Jupyter it returns:
10 equals 2 * 5 11 is a prime number 12 equals 2 * 6 13 is a prime number 14 equals 2 * 7 15 is a prime number ### THIS IS THE ERROR 16 equals 2 * 8 17 is a prime number 18 equals 2 * 9 19 is a prime number
I can’t really find the error here, any advice?
Advertisement
Answer
I guess your attempt was
for num in range(10, 20): for i in range(2, num): if num % i == 0: j = num / i print(f"{num} equals {i} * {j}") break else: print(f"{num} is a prime number") break
whereas the correct code must be like
for num in range(10, 20): for i in range(2, num): if num % i == 0: j = num / i print(f"{num} equals {i} * {j}") break else: print(f"{num} is a prime number")
Note (i) different indentation level for else
clause, and (ii) no second break
. You might want to be more careful about indentation in python.
Here, else
belongs to for
, not if
(and this distinction is realized by the indentation). For this, this documentation might be helpful. In summary, for ... else
behaves like this: once the for
loop ends, else
part is executed, unless the loop was terminated by a break
.