从单词列表创建发送数量x次

时间:2018-01-03 03:27:59

标签: python python-3.x python-2.7

所以我一直在学习python,我正在研究一个小项目。我遇到了一个问题。

我要做的是让程序从文本文件中选择x个单词,然后重复该任务x次。

因此,举个例子,我想在句子中有5个单词并且这样做3次。结果如下:

word1 word2 word3 word4 word5
word1 word2 word3 word4 word5
word1 word2 word3 word4 word5

这是我到目前为止所做的:

import random

word_file = "words.txt" #find word file
Words = open(word_file).read().splitlines() #retrieving and sorting word file

sent = random.randrange(0,1100) #amount of words to choose from in list
print(Words[sent]) #print the words

这将从1100个单词的列表中生成一个单词。所以然后我尝试重复这个任务x次,但它只是重复相同的随机选择的单词x次。

以下是代码:

import random

word_file = "words.txt" #find word file
Words = open(word_file).read().splitlines() #retreiving and sorting word file
sent = random.randrange(0,1100) #amount of words to choose from in list

for x in range(0, 3): #reapeat 3 times
   print(Words[sent]) #print the words

所以我真的遇到了两个问题。第一个是重复第一个和第二个相同的单词,它将在每个单独的行中执行,而不是x个数量,然后是下一行。

有人能够指出我正确的方向来解决这个问题吗?

3 个答案:

答案 0 :(得分:2)

让我稍微解释一下你的代码:

sent = random.randrange(0,1100) # <= returns a random number in range 0 => 1100 , this will not be changed.
for x in range(0, 3):
    print(Words[sent]) # <= This line will print the word at the position sent, 3 times with the same Words and sent so it will be repeated the same word 3 times.

要解决此问题,您需要在每次输出新单词时随机输入一个数字。

for x in range(0, 3):
    sent = random.randrange(0,1100)
    print(Words[sent])

答案 1 :(得分:0)

您每次只需要重新计算一个新的随机数。

for x in range(0, 3):
    sent = random.randrange(0,1100)
    print(Words[sent])

虽然您的情况可能更容易使用内置的random.choices()函数:

print(random.choices(Words, k=3))

将打印Words列表中3个随机单词的列表。

如果您不使用Python 3.6,那么您可以一遍又一遍地调用random.choice(Words)

答案 2 :(得分:0)

你可以将它抽象为函数

def my_function(x,y):
    #your code here

#you script goes here
my_function(x,y)

你只生成一次随机数,你可能需要生成另一个随机数,因为它不同(这个函数可以帮助很多)。在调用之前确保您的函数定义。