title: Invalid syntax in "for item in L" loop
body: <p>I have a feeling I'm missing something pretty simple here but, in this one function:</p>
  
  <pre><code>def triplets(perimeter):
  
      triplets, n, a, b, c = 0  #number of triplets, a, b, c, sides of a triangle, n is used to calculate a triple
      L = primes(int(math.sqrt(perimeter)) #list of primes to divide the perimeter
  
      for item in L: #iterate through the list of primes
          if perimeter % item == 0: #check if a prime divides the perimeter
              n = perimeter / item
              a = n**2 - (n+1)**2 #http://en.wikipedia.org/wiki/Pythagorean_triple
              b = 2n*(n+1)
              c = n**2 + n**2
              if a+b+c == perimeter: #check if it adds up to the perimeter of the triangle
                  triplets = triplets + 1
  
      return triplets
  </code></pre>
  
  <p>I am getting the error:</p>
  
  <pre><code>    for item in L:
                   ^
  SyntaxError: invalid syntax
  </code></pre>
  
  <p>For completeness my entire program looks like this:</p>
  
  <pre><code>import math
  
  def primes(n): #get a list of primes below a number
      if n==2: return [2]
      elif n&lt;2: return []
      s=range(3,n+1,2)
      mroot = n ** 0.5
      half=(n+1)/2-1
      i=0
      m=3
      while m &lt;= mroot:
          if s[i]:
              j=(m*m-3)/2
              s[j]=0
              while j&lt;half:
                  s[j]=0
                  j+=m
          i=i+1
          m=2*i+3
      return [2]+[x for x in s if x]
  
  def triplets(perimeter):
  
      triplets, n, a, b, c = 0  #number of triplets, a, b, c, sides of a triangle, n is used to calculate a triple
      L = primes(int(math.sqrt(perimeter)) #list of primes to divide the perimeter
  
      for item in L: #iterate through the list of primes
          if perimeter % item == 0: #check if a prime divides the perimeter
              n = perimeter / item
              a = n**2 - (n+1)**2 #http://en.wikipedia.org/wiki/Pythagorean_triple
              b = 2n*(n+1)
              c = n**2 + n**2
              if a+b+c == perimeter: #check if it adds up to the perimeter of the triangle
                  triplets = triplets + 1
  
      return triplets
  
  def solve():
      best = 0
      perimeter = 0
      for i in range(1, 1000):
          if triplets(i) &gt; best:
              best = triplets(i)
              perimeter = i
      return perimeter
  
  print solve()
  </code></pre>
  
  <p>I am using Python 2.7.1. I have a semicolon after the for loop, the <code>primes(n)</code> function works, I have a feeling it is probably something stupid but I can't figure out what it is that is causing this invalid syntax.</p>