1

私は最近、基本的なプログラミングを学ぶことにし、Pythonで学ぶためにMITOpenCoursewareクラスを使用しています。課題の1つは、0から始まる1000番目の素数を生成するプログラムを作成することです。私の最初の解決策の1つは、次のとおりです。

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:ありがたいのですが、コードのセマンティクスに関するヘルプは必要ありません。

4

2 に答える 2

1

空白はPythonにとって本当に本当に重要です。コードを記述してからstackoverflowにコピーするときは、さらに注意を払う必要があります。今のところ、私がそれをコピーして貼り付けた場合、あなたが書いたようにあなたのコードは機能しません。

問題については、上の2行を見て、閉じ括弧がないかどうかを確認してください。

于 2012-06-05T18:47:37.540 に答える
1

「whileloopHolder==True:」があり、その後にインデントされたブロックがありません。== Trueの部分は必要ないため、おそらくこれを「whileloopHolder:」と書く必要があります。また、ループ内でインポートを実行することも避けます。インポートステートメントは、他の場所に配置する必要がない限り、通常はファイルの先頭にあります。また、「limit = int(math.sqrt(possiblePrime)」の後に閉じ括弧はありません。

于 2012-06-05T18:45:21.333 に答える