我正在教课,我希望他们从文本文件中读取10个单词的列表,然后在3乘3网格中随机显示其中的9个单词。
我的想法如下:
1)使用 readlist = open('N:\ Words.txt','r')
读取文本文件2)Python将其转换为列表Python使用 import random 随机选择9
3)Python将列表显示在3x3网格中
我尝试过各种各样的事情 - 阅读线,阅读线,附加字符 - 但没有或有限的成功。我错过了一些显而易见的东西,但看不到它。
这会将第一个单词添加到列表中,但如何添加第二个单词:
readlist = open('N:\Words.txt', 'r')
listwords=[]
firstword=readlist.read(5)
listwords.append(firstword)
print (listwords)
答案 0 :(得分:2)
使用random.sample
获取9个随机单词并将返回的列表拆分为三个子列表:
from random import sample
from pprint import pprint as pp
with open("text.txt") as f:
samp = sample(f.read().split(), 9)
pp([samp[i:i+3] for i in range(0, len(samp), 3)],width=40)
[['seven', 'ten', 'four'],
['one', 'five', 'nine'],
['eight', 'two', 'six']]
的text.txt:
one
two
three
four
five
six
seven
eight
nine
ten
如果每行都有一个单词或单行用单词空格分隔,这将有效。
答案 1 :(得分:0)
open
创建一个文件对象。
试试这个:
with open(filename) as f:
words = f.read().splitlines()
这假设文件每行有一个单词。 f.read()
以字符串形式返回整个文件。字符串方法splitlines()
在新行上拆分字符串,返回一个字符串数组,并删除换行符。
我在这里使用一个块with open(filename) as f:
,以便在您从中读取文件后立即关闭(一旦块完成)。块完成后,words
仍在范围内。这种样式只是很好地读取,并且无需手动关闭文件。
答案 2 :(得分:0)
from random import shuffle
words = open('words.txt').read().splitlines()
shuffle(words)
chunks=[words[x:x+3] for x in xrange(0, 9, 3)]
for chunk in chunks:
print chunk
['d', 'f', 'a']
['i', 'j', 'g']
['e', 'h', 'b']
words.txt包含a到j中每个单独行的所有字母。