2010-12-13 3 views
0

Хорошо, что я создал список, содержащий длинный список слов, каждый в своей собственной строке ... Я хочу выбрать случайное слово только один раз, а затем также печатать на экране с небольшим дополнительная информация, говорящая: «Определить: (а затем слово, которое оно выбрало случайным)». В любом случае, когда я запускаю ниже код, который я только получаю определить текст только один раз и то в начале времени выполнения, как я уже говорил выше, я хочу в каждой строке он печатает ..Случайный список слов Выпуск

words = [''' 
word1 
word2 
word3 
'''] 

while len(words) > 0: 
    word = "Define:"+random.choice(words) 
    print word 
    words.remove(word) 

ответ

1
words = [ 
'word1', 
'word2', 
'word3', 
] 

while len(words) > 0: 
    word = random.choice(words) 
    print "Define: %s" % word 
    words.remove(word) 

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

+0

Это не помогло, я просто запустил его, и произошло то же самое. –

+0

О, больно, я вижу, что вы добавляете слова, цитирующие их только один раз. Я отредактирую, что это должно быть :) I.e. каждое слово нуждается в котировках вокруг него, а не только в новой строке. Также они должны быть разделены запятыми. –

+0

Да, но у меня есть несколько тысяч, которые нужно изменить не только несколько, поэтому я использовал другой метод. Является ли их встроенным в словарь Python, я могу это сделать? –

2

Слово должно быть фактический список

#Wrong 
words = [''' 
word1 
word2 
word3 
'''] 
#Better 
words = ['word1','word2','word3'] 

вы можете получить только один раз приглашение, потому что вы используете список длины 1.

+0

Я хотел бы использовать команду списка должным образом, но я использую одно слово за словарем линии, и это будет длиться вечно, чтобы поместить каждый и каждый из них в кавычках. Любые другие идеи? –

+0

words = wordstr.split ('\ n') –

+0

Лучше: words = wordstr.splitlines() - будет обрабатывать окончание строк с разных платформ чисто –

1

Ошибка заключается здесь:

words = [''' 
word1 
word2 
word3 
'''] 

Это список только с одним элементом (длинная строка), а не список слов. Сделать это вместо этого

words = ''' 
word1 
word2 
word3 
'''.splitlines() 

Вы можете сделать все остальное еще более прямым. Так как вы хотите, чтобы напечатать все слова в случайном порядке, вы можете также просто перетасовать список:

random.shuffle(words) 
for word in words: 
    print "Define:", word 
+0

Используете ли вы python> = 3.0? если вам нужно изменить 'print" Define: ", word' в' print ("Define:" + word) ' – SingleNegationElimination

+0

Нет, я использую Python 3.2, и я попытался добавить плюс вместо этого ... ту же ошибку , –

+0

Теперь он работает, спасибо. –

1

wordlist=words.split('\n') преобразует его в список.

0

Основные проблемы вашего кода заключаются в том, что words не является списком, а является одной многострочной строкой. Другая проблема заключалась в том, что вы устанавливаете word в 'Define'+random word, что, конечно же, является чем-то remove() не встретится в списке. Вот версия, которая решает обе эти проблемы:

import random 

words = ''' 
    word1 
    word2 
    word3 
''' 

# remove any excess whitespace from words string and convert it to a list 
words = [line.strip() for line in words.strip().split('\n')] 
print words 
# ['word1', 'word2', 'word3'] 

while len(words) > 0: 
    word = random.choice(words) 
    print "Define:", word 
    words.remove(word) 
# Define: word1 
# Define: word3 
# Define: word2 
Смежные вопросы