[Tutor] Random list exercise

lists lists at justuber.com
Fri Sep 10 00:39:30 CEST 2010

>>> Several small and not so small points:
>>> 1. you assign wordslen each pass through your loop.  While it doesn't
>>> matter in a small loop, it wastes time on the order of the size of your
>>> list.  Instead move wordslen = len(...  above your while loop.  Any time you
>>> put code in a loop that doesn't change in each iteration, you should move it
>>> out of the loop.
>>> 2. since you only use chosenword once in your loop, you could remove
>>> chosenword = words[index] line and replace chosenword in the append(... with
>>> words[index]
>>> 3. your list doesn't contain any duplicate words.  Since  your program is
>>> supposed to catch this, you should add a duplicate to see if it works.
>>> (No!)
>>> 4. I think your line del words[index] is supposed to help out with item 3
>>> but it doesn't.  It just removes the word you just used selected.
>>> 5. And finally, I think you want to print
>>> Just minor points.  nice job -- getting there
>>> --
>>> Joel Goldstick

This seems to work Joel,

It removes the extraneous assignment of chosenword and gets rid of
duplicate entries from the word list.

while words: #has entries in it
    wordslen = len(words) #get the length of the list
    index = random.randint(0, wordslen -1) #get a random index
    if words[index] not in randwords: #as long as the word isn't
already in the new list
        randwords.append(words[index]) #append the random word to a new list
        del words[index] #del the word from the old list
        del words[index] #remove the duplicate word from the source list

More information about the Tutor mailing list