Цикл For-Else в другом цикле For
У меня есть вопрос относительно цикла for-else в другом цикле for. Итак, вот пример:
primelist = []
for p in range (2, x+1):
print 'in first for'
raw_input()
for i in range(2, p):
print 'in second for'
if p%i == 0:
print 'in if'
raw_input()
break
else:
print 'in else'
raw_input()
primelist = primelist + [p]
return primelist
Как вы видите, это для определения простых чисел и сохранения их в списке, чтобы их можно было найти позже. Так что моя проблема с первым циклом for. Когда я запускаю программу, она вводится так: Первый цикл FOR, ELSE, Первый цикл FOR, Второй цикл FOR и так далее. Почему он пропускает в ELSE в первый раз? Также, если я прошу 1000-й номер, я получу: 7919 с
for i in range(2, p)
и 7907 с
for i in range(2, p/2).
Это почему? Надеюсь, вы поможете мне с этим, но, пожалуйста, не давайте других методов для реализации алгоритма простого числа!
1 ответ
Решение
Питона range
не включает конечное значение.
range[start, end)
Итак, в первой итерации значение p
будет 2 и range(2, 2)
это пустой список. Вот почему остальная часть введена.
print range(2, 2) # []