title: ValueError: need more than 1 value to unpack: Learn Python The Hard Way Ex:41
body: <p>I am trying to make a script from Learn Python The Hard Way work.
  From 6 errors I able to make it down to one error.
  But this one error I can't solve even after trying for hours.
  This is the error message:</p>
  
  <blockquote>
    <p>E:\PythonCode>python oop_test.py
    Traceback (most recent call last):
      File "oop_test.py", line 72, in 
        question, answer = convert(snippet,phrase)[0]
    ValueError: too many values to unpack</p>
  </blockquote>
  
  <p>Here is the full source code:</p>
  
  <pre><code>import random
  from urllib import urlopen
  import sys
  
  WORD_URL = "http://learncodethehardway.org/words.txt"
  
  WORDS = []
  
  PHRASES = {
      "class %%%(%%%): ":
      "Make a class named %%% that is-a %%%",
      "class %%%(object):\n\tdef __init__(self, ***)":
      "class %%% has-a __init__ that takes self and *** parameters",
      "class %%%(object):\n\tdef ***(self, @@@)":
      "class %%% has-a function named *** that takes self and @@@ parameters.",
      "*** = %%%()":
      "Set *** to an instance of class %%%.",
      "***.***(@@@)":
      "From *** get the *** attribute and set it to '***'."
  }
  
  #do they want to drill phrases first
  
  PHRASE_FIRST = False
  
  if len(sys.argv) == 2 and sys.argv[1] == "english":
      PHRASE_FIRST = True
  
  #load up the words from the website
  
  for word in urlopen(WORD_URL).readlines():
      WORDS.append(word.strip())
  
  def convert(snippet, phrase):
       class_names = [w.capitalize() for w in random.sample(WORDS, snippet.count("%%%"))]
  
       other_names = random.sample(WORDS, snippet.count("***"))
  
       results = []
       param_names = []
  
       for i in range(0, snippet.count("@@@")):
          param_count = random.randint(1,3)
          param_names.append(','.join(random.sample(WORDS, param_count)))
  
       for sentence in snippet, phrase:
           result = sentence[:]
  
       #fake class names
       for word in class_names:
          result = result.replace("%%%", word, 1)
  
       #fake other names
       for word in other_names:
          result  = result.replace("***", word, 1)
  
       #fake parameter lists
       for word in param_names:
          result = result.replace("@@@", word, 1)
  
       results.append(result)
       return results
  
  
  try :
      while True : 
          snippets = PHRASES.keys()
          random.shuffle(snippets)
  
          for snippet in snippets:
              phrase = PHRASES[snippet]
              question, answer = convert(snippet,phrase)
              if PHRASE_FIRST:
                  question, answer = answer, question
              print question
              raw_input("&gt; ")
              print "ANSWER: %s\n\n" % answer
  except EOFError:
      print "\nBye"   
  </code></pre>