Luke Wee
Luke Wee

Reputation: 3

Listing words randomly without repeating them

I just finished learning how to do lists in python from the book,Python Programming for the Absolute Beginner, and came across a challenge asking to list out words randomly without repeating them. I have been trying to do it since the book doesn't gives you the answer to it. So far this is my code:

WORDS = ("YOU","ARE","WHO","THINK")
for word in WORDS:
    newword=random.choice(WORDS)
    while newword==word is False:
          newword=random.choice(WORDS)
          word=newword
          print(word)

As obvious as it seems, the code didn't work out as the words repeat in lists.

Upvotes: 0

Views: 1656

Answers (2)

trainoasis
trainoasis

Reputation: 6720

You could use shuffle with a list instead of a tuple.

import random
lst = ['WHO','YOU','THINK','ARE']
random.shuffle(lst)
for x in lst:
   print x

See this Q/A here also. To convert a tuple to list: Q/A

The whole code if you insist on having a tuple:

import random
tuple = ('WHO','YOU','THINK','ARE')
lst = list(tuple)
random.shuffle(lst)
for x in lst:
   print x

Upvotes: 2

Minzkraut
Minzkraut

Reputation: 2187

Add the printed word to a different array (e.g. 'usedwords') and loop through that array every time before you print another word.
Thats not perfomant but its a small list... so it should work just fine
(no code example, it should be in a beginners range to do that)

Upvotes: 0

Related Questions