"David" <[email protected]> wrote

def uses_all(word, required):
   for letter in required:
       if letter not in word:
           return False
   return True

Now, I want to feed this code a list of words. This is what I have so far:


def uses_all(required):

It is usually better to leave things that work alone.
You could have renamed the original finction then used it
in your new one. That would make the code much simpler.


   fin = open('words.txt')
   for line in fin:
       word = line.strip()
         if old_uses_all(word, required)
             print word

But as ever its better to return a value from a function rather
than print from inside so i'd make your new function:

def uses_all(required, wordfile="wordlist.txt"):
   words = []
   for line in open(wordfile):
       word = line.strip()
       if old_uses_all(word, required)
          words.append(word)
   return words

required = raw_input("what letters have to be used? ")
print required

for word in uses_all(required)
     print word

The code runs, but does not print the words. All I get it the output of
the 'print required' command:

I realise that my loop fails to execute beyond the first word in the
list ("aa"), but why?

Look at your code:

def uses_all(required):
   fin = open('words.txt')
   for line in fin:
       word = line.strip()
       for letter in required:
           if letter not in word:
               # print "False!"
               return False

return exits the function so the first letter you find that is not in
a word you will exit.


--
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld

_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to