Странная синтаксическая ошибка в Python 2.7.3
Недавно я решил изучать базовое программирование и использую класс MIT OpenCourseware для изучения Python. Одним из заданий является создание программы, которая генерирует 1000-е простое число, начиная с 0. Одно из моих первых решений заключается в следующем:
oddList = []
for odd in range(3, 10000):
if odd % 2 != 0:
oddList.append(odd)
else:
continue
primeCount = 3
loopHolder = True
while loopHolder == True:
for possiblePrime in oddList:
if primeCount == 1000:
print possiblePrime
loopHolder = False
from math import *
limit = int(math.sqrt(possiblePrime)
for primeTest in range(2, limit):
testCount = 0
if possiblePrime % primeTest == 0:
testCount = testCount + 1
primeCount = primeCount
else:
continue
if testCount > 0:
primeCount = primeCount
break
else:
primeCount = primeCount + 1
break
Однако, когда я запускаю его, я получаю синтаксическую ошибку "for primeTest in range(2, limit):", и python выделяет двоеточие специально. Я понимаю, что ошибка, вероятно, является результатом синтаксической ошибки где-то еще, но я не могу ее найти. Может ли кто-нибудь указать, где моя ошибка?
PS: Помощь с семантикой кода не нужна, хотя и приветствуется.
2 ответа
У вас есть "while loopHolder == True:" без блока с отступом после него. Вам, вероятно, следует написать это как while whileHolder:, так как часть == True не требуется. Я бы также не стал делать импорт внутри цикла. Операторы импорта обычно находятся вверху файла, если вам не нужно, чтобы они были где-то еще. У вас также нет закрывающей скобки после "limit = int(math.sqrt(возможный Prime)").
Пробел действительно очень важен для питона. Вы должны уделять больше внимания этому, когда вы пишете код, а затем копируете его в stackru. Прямо сейчас ваш код не будет работать так, как вы его написали, если бы я скопировал и вставил его.
Для вашей проблемы посмотрите на две строки выше и посмотрите, нет ли у вас закрывающей скобки.