如何从文本Fi打印随机单词

2024-06-01 08:25:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个2000字的文本文件,每行一个字。我试图创建一个代码,每10秒从文本文件的同一行打印出两个随机单词。我的文本文件的开始部分如下所示:

slip
melt
true
therapeutic
scarce
visitor
wild
tickle
.
.
.

我写的代码是:

^{pr2}$

当我执行代码而不是打印两个随机单词时,它开始按顺序从文本顶部打印所有单词。我不知道为什么会发生这种情况,因为数字_1和数字_2在循环中,所以每次两个单词打印数字_1和数字_2都应该更改为另外两个随机数字。我不认为在循环之外替换number_1和number_2也不起作用,因为它们将被固定为两个值,代码将继续打印相同的两个单词。有人知道我能做些什么来修正代码吗?在


Tags: 代码truenumber顺序数字单词文本文件visitor
2条回答

readline()不接受任何参数,只返回文件输入*中的下一行。相反,尝试使用readlines()创建一个列表,然后从该列表中随机选择。在这里,您将生成word_list = my_file.readlines(),然后从word_list中选择随机元素。在

*更正:readline()确实需要读取字节数的参数。函数的文档似乎没有明确说明这一点。谢谢E.Ducateme!在

my_file.readline(number_1)没有执行您想要的操作。readline的参数是可以读取的行的最大大小(以字节为单位),而不是该行在文件中的位置。在

正如另一个答案所提到的,一个更好的方法是先将行读入一个列表中,然后从中随机选择单词:

from time import sleep
import random

my_file = open("words.txt", "r")
words = my_file.readlines()

i = 1
while i > 0:
    number_1 = random.randint(0, 2000)
    number_2 = random.randint(0, 2000)
    word_1 = words[number_1]
    word_2 = words[number_2]
    print(word_1.rstrip() + " " + word_2.rstrip())
    i += 1
    sleep(10)

相关问题 更多 >