Я слежу за учебником по питону на их сайте, и в настоящее время я нахожусь в разделе продолжения перерыва. Я только что попробовал этот пример кода.
>>> 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'
...
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
И вместо того, чтобы выплевывать то, что сказано выше, я получаю
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
Мне кажется, что он продолжает работать внутри цикла for, но почему учебник не принял это во внимание? Устаревший ли он для последней сборки интерпретатора (я использую xubuntu jaunty)?
Мне удалось это исправить, добавив строку
else:
... if n != y:
... print n, 'is a prime number'
... y = n
но я обеспокоен тем, что это может быть плохой практикой кодирования. Спасибо за вашу помощь.