好了到目前为止我已经创建了一个列表,其中包含一长串单词,每个单词都在它自己的行上...我只想选择一个随机单词然后再打印到屏幕上,附上一些额外信息说, “定义:(然后随机挑选的单词)”。无论如何,当我运行下面的代码时,我只得到一次定义文本,那就是在运行时开始时,正如我上面提到的,我想在它打印的每一行上都有它。
words = ['''
word1
word2
word3
''']
while len(words) > 0:
word = "Define:"+random.choice(words)
print word
words.remove(word)
答案 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