On Thu, Sep 9, 2010 at 4:51 PM, lists <li...@justuber.com> wrote: > Hi tutors, > > Still on my Python learning journey! I've just competed an exercise > which asks the student to "Create a program that creates a list of > words in random order. This program should print all the words and not > repeat any." I've printed the list for my own needs. The list > randwords aims to answer the specific request of the exercise author. > > If anyone has the inclination and a minute to spare, please run your > eyes over my answer. It works, but is it an OK way to approach the > exercise? > > Thanks again :-D > > Chris > > import random > > #LIST > words = ["one", "two", "three", "four", "five", "six", "seven", > "eight", "nine", "ten", "eleven"] > randwords = [] > > 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 > chosenword = words[index] > randwords.append(chosenword) #append the random word to a new list > del words[index] #del the word from the old list > > for word in randwords: > print word # print them >
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
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor