我在教一堂课,我希望他们从文本文件中读取10个单词的列表,然后在3×3网格中随机显示其中的9个单词。
我的想法如下:
1)使用readlist = open('N:\Words.txt','r')读取文本文件
2) Python将其转换为一个列表,Python使用导入随机选择9。
3) Python在3x3网格中对列表进行双工处理
我尝试过各种各样的东西--读行,读行,加字符--但是没有成功,也没有成功。我错过了一些显而易见的东西,但看不见。
这会将第一个单词添加到列表中,但如何添加第二个单词:
readlist = open('N:\Words.txt', 'r')
listwords=[]
firstword=readlist.read(5)
listwords.append(firstword)
print (listwords)发布于 2015-02-28 12:12:43
使用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如果您每行有一个单词,或者单行的单词用空格分隔,这将是可行的。
发布于 2015-02-28 12:10:00
open创建一个文件对象。
试试这个:
with open(filename) as f:
words = f.read().splitlines()这是假设文件每一行有一个单词。f.read()以字符串的形式返回整个文件。string方法splitlines()将字符串拆分到换行符上,返回一个字符串数组,并去掉换行符。
我在这里使用一个with open(filename) as f:块,以便在您从它读取文件后立即关闭它(一旦该块完成)。块完成后,words仍在作用域中。这种样式读起来很好,避免了手动关闭文件的需要。
发布于 2015-02-28 12:14:59
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的所有字母。
https://stackoverflow.com/questions/28781476
复制相似问题