我最近决定学习基础编程,并且正在使用MIT OpenCourseware类来学习Python。其中一个任务是创建一个程序,从0开始生成第1000个素数。我的第一个解决方案之一如下:
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
然而,当我运行它时,我收到语法错误 “对于范围内的primeTest(2,限制):”和python特别突出了冒号。我意识到错误可能是其他地方语法错误的结果,但我找不到它。有人可以指出我的错误在哪里吗?
PS:虽然赞赏,但不需要帮助代码的语义。
答案 0 :(得分:1)
你有“while loopHolder == True:”,后面没有缩进块。您应该将其写为“while loopHolder:”,因为== True部分不是必需的。我也会避免在循环中进行导入。导入语句通常位于文件的顶部,除非您需要它在其他位置。在“limit = int(math.sqrt(possiblePrime)”之后你也没有一个右括号。
答案 1 :(得分:1)
对于python来说,白色空间真的非常重要。在编写代码然后将其复制到stackoverflow时,需要更加注意这一点。现在,如果我要复制并粘贴它,你的代码将无法正常工作。
对于您的问题,请查看上面的两行,看看您是否缺少右括号。