Я подозреваю, что вы хотите выбрать их случайным образом без замены;если все, что вы делаете, это выбираете слова случайным образом, например,
do until set empty
prick a random word and print it
, это (а) не завершится и (б) повторять слова в среднем 1 / n раз для n слов.
Было бы заманчиво использовать набор Python, но неудобно, что нет очевидного способа выбрать случайный элемент из набора, поскольку он не упорядочен.(Вы могли бы доказать, что set#pop
будет работать, так как он принимает произвольный следующий элемент, но если бы я оценивал, я бы не дал этого полного балла.) С другой стороны, в описании написано множество.
Итак, я бы сделал что-то вроде этого:
Сначала поместите элементы в список.Обратите внимание, что то, что у вас есть, помещает в список одну строку с 10 строками, то есть ваш список имеет длину 1. Держу пари, что вам лучше инициализировать, как
words = [ "test 1","test 2" # and so on
]
Далее, выберите ваши элементы, используяchoice
as
word = random.choice(words)
Распечатайте его
print word
и удалите его из списка
words.remove(word)
Поместите это в цикл, который продолжается до тех пор, пока не закончитсяслов.Вы получаете что-то вроде:
>>> import random
>>> words = ['a', 'b', 'c' ]
>>> while len(words) > 0:
... word = random.choice(words)
... print word
... words.remove(word)
...
b
a
c
gnibbler указывает, что вы также можете иметь
import random
words = [ ... ]
shuf = random.shuffle(words)
for i in shuf:
print i
, но это не рассматривает список как набор;это зависит от наличия неявного порядка, установленного shuffle.