Random without repetition?

Instead of random.choice within the for loop, use random.shuffle here.

This way, your list is guaranteed to be have all the elements, while also maintaining the requirement of random order:

>>> import random
>>> tab = ["house", "word", "computer", "table", "cat", "enter", "space"]
>>> random.shuffle(tab)
>>> print tab

As for your original code, that will not work, since the if else block as you’ve written ensures that no element is added within the list tab. You could correct that by removing the else block like below:

>>> for i in range(1, 8):
...     item = random.choice(["house", "word", "computer", "table", "cat", "enter", "space"])
...     if item not in tab:
...         print(item)
...         tab.append(item)
... 
house
cat
space
enter

But now you will need to alter the logic so that the runs in which same value is randomly returned don’t affect the number of outputs.

Leave a Comment