我正在编写一段代码,应该从文本文件中读取10个单词的列表,然后随机选择9.遇到的问题是我的代码(下面)产生错误,说明“样本大于人口”#39 ;。有人可以帮忙吗?感谢。
with open("9 words.txt") as f:
for r in range(3):
words = random.sample([x.rstrip() for x in f],3)
grid = [words[i:i +3] for i in range(0,len(words),3)]
for x,y,z in grid:
Label(text=(x,y,z),font = font).grid(row=r)
错误在第3行中说明。
答案 0 :(得分:0)
我发现了问题,但我并不完全确定究竟是什么导致了这个问题。您需要在for循环之外分配列表推导。
with open("9 words.txt") as f:
word_list = [x.rstrip() for x in f] # Assign here
for r in range(3):
#word_list = [x.rstrip() for x in f] # Remove from main code only example
#print(word_list) # Remove from main code only example
words = random.sample(word_list, 3)
grid = [words[i:i +3] for i in range(0,len(words),3)]
for x,y,z in grid:
tk.Label(text=(x,y,z)).grid(row=r)
如果您取消注释,您将从打印输出中看到。
['NIGHT', 'SMOKE', 'GHOST', 'TOOTH', 'ABOUT', 'CAMEL', 'BROWN', 'FUNNY', 'CHAIR', 'PRICE']
[]
#Error
因此出于某种原因,它正在清空列表