所以我一直在学习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个数量,然后是下一行。
有人能够指出我正确的方向来解决这个问题吗?
答案 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)
你只生成一次随机数,你可能需要生成另一个随机数,因为它不同(这个函数可以帮助很多)。在调用之前确保您的函数定义。