生成随机单词

时间:2012-06-23 03:19:39

标签: python random

我正在尝试创建一个包含在列表中的一定数量的不同单词的字符串,但是我使用的代码只是随机使用一个单词,而不是每个打印的单词都使用不同的单词。

这是我的代码:

import random

words = ['hello', 'apple', 'something', 'yeah', 'nope', 'lalala']
print random.choice(words) * 5

示例输出为:

hellohellohellohellohello

预期输出的示例如下:

appleyeahhellonopesomething

谁能告诉我我做错了什么?

5 个答案:

答案 0 :(得分:7)

random.choice(words) * 5只执行random.choice一次,然后将结果乘以5,导致重复相同的字符串。

>>> import random
>>> words = ['hello', 'apple', 'something', 'yeah', 'nope', 'lalala']
>>> print ''.join(random.choice(words) for _ in range(5))
applesomethinghellohellolalala

答案 1 :(得分:5)

如果您不希望重复原始列表中的字词,则可以使用sample

import random as rn
words = ['hello', 'apple', 'something', 'yeah', 'nope', 'lalala']

word = ''.join(rn.sample(words, 5))

结果:

>>> word
'yeahhellosomethingapplenope'

答案 2 :(得分:3)

您没有调用random.choice(words) 5次,您获得random.choice(words)的输出,然后乘以5次。使用字符串,它只是重复字符串。

"abc" * 3会给你"abcabcabc"

因此,首先根据您随机选择的单词,它会重复5次。

答案 3 :(得分:2)

“乘以”一个字符串将多次打印该字符串。例如,print '=' * 30将打印30行"=",这就是为什么你得到5次"hello" - 它重复随机选择的单词5次。

import random, sys
words = ['hello', 'apple', 'something', 'yeah', 'nope', 'lalala']

for i in range(5):
    sys.stdout.write(random.choice(words)) 

使用choice()将为您提供一组5个随机选择。请注意,我们使用sys.std.write来避免空格连续的print语句放在单词之间。

例如,来自两次运行:

yeahsomethinghelloyeahlalala

somethingyeahsomethinglalalanope
  

choice()

     

从非空序列seq返回一个随机元素。如果是seq   为空,引发IndexError。

当然在Python 3.x中,我们可以使用print代替sys.stdout.write,并将其end值设置为''。即,

print(random.choice(words), end='')

答案 4 :(得分:1)

import random
WORDS = ("Python","Java","C++","Swift","Assembly")
for letter in WORDS:
    position = random.randrange(len(WORDS))
    word = WORDS[position]
    print(word)