随机单词列表问题

时间:2010-12-13 16:00:17

标签: python

好了到目前为止我已经创建了一个列表,其中包含一长串单词,每个单词都在它自己的行上...我只想选择一个随机单词然后再打印到屏幕上,附上一些额外信息说, “定义:(然后随机挑选的单词)”。无论如何,当我运行下面的代码时,我只得到一次定义文本,那就是在运行时开始时,正如我上面提到的,我想在它打印的每一行上都有它。

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

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

5 个答案:

答案 0 :(得分:2)

单词必须是实际列表

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

您只能获得一次提示,因为您使用的是长度为1的列表。

答案 1 :(得分:1)

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

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

这个小小的改变可能会有所帮助:)。另外,我强烈建议打印如上所述的字符串

答案 2 :(得分:1)

错误在于:

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

这是一个只包含一个元素(长字符串)的列表,而不是单词列表。这样做

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

你也可以让其他人更直接。由于您希望以随机顺序打印所有单词,因此您可以将列表随机打印:

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

答案 3 :(得分:1)

wordlist=words.split('\n')会将其转换为列表。

答案 4 :(得分: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