在Python中列出10件事,并显示9项,然后下次显示时,显示之前未显示的项

在Python中列出10件事,并显示9项,然后下次显示时,显示之前未显示的项,python,random,Python,Random,我在words.txt中列出了10个单词 import random with open("words.txt") as f: words = random.sample([x.strip() for x in f], 9) grouped = [words[i:i+3] for i in range(0, len(words), 3)] for l in grouped: print ("").join("{:<10}".format(x) for x in l) 随

我在words.txt中列出了10个单词

import random
with open("words.txt") as f:
    words = random.sample([x.strip() for x in f], 9)

grouped = [words[i:i+3] for i in range(0, len(words), 3)]
for l in grouped:
    print ("").join("{:<10}".format(x) for x in l)
随机导入
以open(“words.txt”)作为f:
words=random.sample([x.strip()表示f中的x],9)
分组=[单词[i:i+3]表示范围内的i(0,len(单词),3)]
对于分组中的l:

打印(“”)。加入(“{:洗牌列表,选择前9项(它们将以随机顺序排列),然后用剩余的项替换其中一项:

with open("words.txt") as f:
    words = [x.strip() for x in f]

random.shuffle(words)
first_9 = words[:9]
last = words[-1]

# ...

words[random.randrange(9)] = last
这将首先读取文件中的所有单词,并用于将所有项目按随机顺序排列。

试试这个

with open('words.txt', 'r') as f:
    myWords = [words.strip() for words in f]
random.shuffle(myWords)   
for word in range(len(myWords)-1):
    print(word) # prints 9 words
randomWord=randint(0,8)
myWords[randomWord]=myWords[9]
for items in myWords:
    print(items)

嗯,要显示丢失的项目,您需要读取整个文件。为什么不将其读入一个列表(您当前拥有的[x.strip()for x in f]理解),对其进行采样并打印样本,然后打印整个列表?@MartijnPieters我现在修复了它,我想
file.readlines()
包括换行符,您需要将它们去除。为什么在
myNames[:-1]
上循环时要使用
range()
呢?我修复了这些词。去除()我使用range是因为我还是python的初学者,我不知道你刚刚做了什么。我只是尽我所能帮助他。是的,我正在给你反馈如何进一步改进python。