[Tutor] Else Clause In A Loop
"Simón A. Ruiz"
sruiz at canterburyschool.org
Tue May 13 17:09:20 CEST 2008
kinuthia muchane wrote:
> On Mon, 2008-05-12 at 14:08 -0400, "Simón A. Ruiz" wrote:
>> For each of those numbers, it checks to see if any number between 2 and
>> i is divisible into i. If it finds anything, we know it's not a prime,
>> and so it breaks out of that second loop without completing it, which
>> means the else block isn't executed.
>
> This is where I am getting lost. When the variable 'number' is 3, it
> means that in that instance the inner 'for' statement will be 'for j in
> range(2,3)', hmmm which means that we will be dividing each element by 2
> in the first 'for' statement and checking whether it is true , no? But
> 2%2 is zero, so, in my warped logic, the inner 'for' loop should break
> and the else clause will not execute!
When i is 3, then we'll only check (2 % 3 == 0) which is False, so the
loop ends unbroken and runs the else clause letting us know that 3 is
indeed a prime number.
Never will we check (2 % 2 == 0).
When i is 2, range(2,2) returns [], so the loop ends unbroken (without
starting) and runs the else clause.
>> If it can't find anything that i is divisible by, then that inside for
>> loop finishes without breaking, we know that i is a prime number, and
>> the "else" clause is executed.
>
> This is where it gets even more interesting for me. Wont 'i' in one
> instance be 8, so at that particular moment there will be a 7 in the
> inner 'for' loop which will be divisible by one of our 'prime' numbers
> ie 7?! I know I am wrong but for some reason I cannot see the light! :-)
Don't worry about it, you're doing fine.
Remember, when you're most confused you're most ready to learn
something. :-D
Ok, so when i is 8, we check:
is (8 % 2 == 0)? True. Break!
So, we've broken out of the inner loop and thus ignore the else
statement. We know 8 is not a prime number.
Now, for a prime. When i is 7, we check:
is (7 % 2 == 0)? False. Next!
is (7 % 3 == 0)? False. Next!
is (7 % 4 == 0)? False. Next!
is (7 % 5 == 0)? False. Next!
is (7 % 6 == 0)? False. Next!
So, we've finished the inner loop without breaking, so we now run the
else clause:
is a prime number 7
Does this help at all?
Hope this finds you all having a beautiful day!
Simón
More information about the Tutor
mailing list