2011-08-19 136 views
-3

當我在python中運行此代碼時,它給了我一個語法錯誤,並突出顯示了我指出的行中的「l」。它爲什麼這樣做?Python語法錯誤

from Euler import primeSieve,sumDig 

def powerSieve(n): 
    powers = [] 
    primes = primeSieve(100) 
    for i in primes: 
     j = 2 
     while i ** j <= n: 
      for k in primes: 
       if i == k and i ** j >= 10: powers.append(i ** j) 
       else: 
        l = 1 
        while l * (i ** j) <= n: 
         if l * (i ** j) >= 10: powers.append(l * (i ** j) 
##THIS LINE    l *= k 
      j += 1 
    return sorted(set(powers)) 

from time import clock 
start = clock() 

print "Answer to PE119 = ",powerSieve(100) 

elapsed = clock() - start 
print elapsed * 1000,"ms" 
+0

這條線是如何縮進的? – utdemir

+0

在決定發佈re:語法錯誤之前,您應該花更多時間處理代碼。 – Reno

回答

2

您錯過了前一行的右括號。更改此:

if l * (i ** j) >= 10: powers.append(l * (i ** j) 

要這樣:

if l * (i ** j) >= 10: powers.append(l * (i ** j)) 
+0

啊,我明白了。好簡單。謝謝。還有下面的每個人。 – rbharvs

+1

請勿發佈「謝謝」意見,請等待15分鐘,然後接受最佳答案! – agf

0

你忘了關前行中的括號內。它應該是:

powers.append(l * (i ** j)) 
0

您在該行上面有if語句,因此上面的行應該以冒號結尾,並且突出顯示的行應該縮進。

+0

錯誤,再次查看'if'語句。 – agf