Nested for loop problem

Don Low m_tessier at sympatico.ca
Sat Nov 8 23:22:04 CET 2003


Hi,

I'm studying the python tutorial at python.org. In introducing the
concept of *break* and *continue* Statements, and *else* Clauses on
Loops, there's an example that goes as follows:

#!/usr/bin/python

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 have a problem with this nested for loop, because the answer it yields
doesn't make sense to me. Here is the answer:

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

Where I have the problem is as follows:

n = 2 in the first iteration of range(2, 10); therefore x = [] in the
first iteration of range(2, n). More specifically:

>>> range(2, 10)
[2, 3, 4, 5, 6, 7, 8, 9]
>>> range(2, 2)
[]

>>> for x in range(2, 2):
...     print x
... 

Since x prints nothing, I guess x = NULL. If I try:

if 2 % NULL or blank, I get an error message.

So the question is when I run the script, why doesn't it produce an
error message?

OK, I'm sure I'm misunderstanding something, but could someone explain?


-- 
Thanks,

Don




More information about the Python-list mailing list