Выбрать случайное слово на одной строке в Python? - PullRequest
2 голосов
/ 13 декабря 2010

Как бы я выбрал одну строку и все слова в этой строке, а затем распечатать их на экране, используя набор. Это то, что я до сих пор:

import random

test = ['''
line 1
line 2
line 3
line 4
line 5
line 6
''']
print (random.choice(test))

Ответы [ 2 ]

3 голосов
/ 13 декабря 2010

Я думаю, что это именно то, что вы просите:

print random.choice(test[0].split('\n'))
line 5

У меня такое ощущение, что вы хотите сделать немного больше, хотя.

1 голос
/ 13 декабря 2010

Я подозреваю, что вы хотите выбрать их случайным образом без замены;если все, что вы делаете, это выбираете слова случайным образом, например,

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...