我正在尝试创建一个包含在列表中的一定数量的不同单词的字符串,但是我使用的代码只是随机使用一个单词,而不是每个打印的单词都使用不同的单词。
这是我的代码:
import random
words = ['hello', 'apple', 'something', 'yeah', 'nope', 'lalala']
print random.choice(words) * 5
示例输出为:
hellohellohellohellohello
预期输出的示例如下:
appleyeahhellonopesomething
谁能告诉我我做错了什么?
答案 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)