On 11/27/2011 05:17 PM, myles broomes wrote:
I requested help for this code earlier and I thought it had been corrected but
apparently, there is still a problem with it...
To start with, tell us what version of Python, and what operating system
platform you're using. I'm assuming Python 3.x and Linux. In this
case the first matters, the second probably does not.
#random word order program
#the user gives the program a list of words
#the program then returns them in a random order
import random
#explain the purpose of the program to the user
print("At the prompt, type in a list of words and they will be returned in a random
order.")
#get the users input for the list of words, one by one
first_word = input("Please enter your first word: ")
second_word = input("Please enter your second word: ")
third_word = input("Please enter your third word: ")
fourth_word = input("Please enter your fourth word: ")
fifth_word = input("Please enter your fifth word: ")
#create a tuple containing the users words of the words
word_list = (first_word,second_word,third_word,fourth_word,fifth_word)
#create an empty list that the words will go into to be returned in a random
order
random_word_list = []
print("Now your list will be displayed in a random order.")
#random order list
while len(random_word_list) != len(word_list):
word = random.choice(word_list)
if word not in random_word_list:
random_word_list += word
If you use += operator with list on the left side, it assumes something
compatible with list on the right. So either use
random_word_list += [word]
Or else use random_word_list.append(word)
As it's currently coded, it take each character of the word and adds
them to the list, so the list doesn't match the original at all.
Next problem you might encounter is if the user doesn't give unique
words. If they repeat one of them, the loop will never terminate. You
figure out why.
#display the random word list
print(random_word_list)
input("Press enter to exit...")
And once again, the following is displayed....
At the prompt, type in a list of words and they will be returned in a random
order.
Please enter your first word: one
Please enter your second word: two
Please enter your third word: three
Please enter your fourth word: four
Please enter your fifth word: five
Now your list will be displayed in a random order.
Then the program just stops for some reason. Again, any help is much
appreciated.
As others have pointed out, there is at least one function in random
that's a better match to your problem. You could collapse the loop to
one line, and duplicates wouldn't be an issue.
Another approach would be to make a set out of the original input.
Duplicates will be thrown out (you might want to tell the user,
though). Then you take the set as an argument to the function I just
hinted at, and out comes your answer.
--
DaveA
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor