mistake in python tutorial
MRAB
python at mrabarnett.plus.com
Tue Jun 5 23:04:18 EDT 2012
On 06/06/2012 03:00, Dave Angel wrote:
> On 06/05/2012 09:43 PM, Miriam Gomez Rios wrote:
>> Hello, I think that the example in section 4.4 in the tutorial for python 2.7X is wrong.
>>
>> http://docs.python.org/tutorial/controlflow.html
>>
>>
>>
>> It will end up printing this if you run the exact code listed in the tutorial.
>>
>>
>>
>> 3 is a prime number
>>
>> 4 equals 2*2
>>
>> 5 is a prime number
>>
>> 5 is a prime number
>>
>> 5 is a prime number
>>
>> 6 equals 2 * 3
>>
>> 7 is a prime number
>>
>> 7 is a prime number
>>
>> 7 is a prime number
>>
>> 7 is a prime number
>>
>> 7 is a prime number
>>
>> 8 equals 2*4
>>
>> 9 is a prime number
>>
>> 9 equals 3*3
>>
>>
>>
>> I believe it is because the is no break in " else print n is a prime number" and
>>
>> it never prints anything about number 2 because the second for is like range(2,2)
>>
>> which is empty so it does nothing.
>>
>>
>
> Hate to tell you, but the example works as it exists on the website. If
> you got your output, you must have messed up the indentation, which is
> VERY important in python.
>
> In particular, the else clause has to line up with the for statement,
> NOT with the if statement.
>
> If it helps, this is the correct indentation. Paste it into a file, and
> run it.
>
> 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'
>
I can confirm that the OP's output is what you get when the 'else' is
indented the same as the 'if'.
More information about the Python-list
mailing list