Python 随机显示和存储,无需重复存储值

Python 随机显示和存储,无需重复存储值,python,random,Python,Random,我正在努力使代码正常工作。 我的电脑上储存了大量水果。每当我运行该程序时,我都希望该程序随机显示列表中的一种水果。然后将水果保存在myfruitpicted中 我的目标是:如果随机选择的水果已经在myfurticketed中,程序应该始终检查myfurticketed。然后,它应该丢弃该水果,并从原始列表中随机选择另一个。当myfruitpicted列表中的水果数等于原始列表中的水果数时。程序应中断并打印已显示的所有水果 我的想法是,我不想在运行程序时看到一个水果显示两次。也因为水果清单太大了。

我正在努力使代码正常工作。
我的电脑上储存了大量水果。每当我运行该程序时,我都希望该程序随机显示列表中的一种水果。然后将水果保存在
myfruitpicted

我的目标是:如果随机选择的水果已经在
myfurticketed
中,程序应该始终检查
myfurticketed
。然后,它应该丢弃该水果,并从原始列表中随机选择另一个。当
myfruitpicted
列表中的水果数等于原始列表中的水果数时。程序应
中断
并打印已显示的所有水果

我的想法是,我不想在运行程序时看到一个水果显示两次。也因为水果清单太大了。我希望代码能够正常工作,这样就不会导致内存问题或程序运行缓慢

例如,假设文件中列出了5种水果。当我运行程序时,它应该给我1个水果,然后在不关闭程序的情况下,我将再次运行程序以获得另一个不同的水果,依此类推。现在,在显示第5个水果后,如果我要另一个水果,那么程序将中断并打印“所有水果都已显示”。因此,基本的程序应该知道我在文件中有多少个水果,它应该继续提供不同的水果,只要它还没有给我

import random

myfruitPicked = ''
fruits = "C:\users\Homer\fruits.txt"

while True:
     randFruit = random.choice(fruits)
     myfruitPicked = myfruitPicked + randFruit

     if randFruit in myfruitPicked:
         print('All Fruits Already Displayed')
         break
     else:
         print(randFruit)

这就是我在评论中的意思。创建一个水果副本的理由并不那么必要。因为您将从变量中删除结果,而不是从.txt文件中删除。由你决定

import random
myfruitPicked = ''
fruits = "C:\users\Homer\fruits.txt"
#ASSUMING EACH FRUIT IS IN A DIFFERENT LINE, it is passed into an array (lines).
lines = [line.rstrip('\n') for line in open(fruits)]
fruitsC = lines 

while True:
    randFruit = random.choice(fruitsC)
    myfruitPicked = myfruitPicked + randFruit
    #Remove picked fruit from list
    fruitsC.remove(randFruit)
    if (len(fruitsC)==0): #All the fruits have been picked
        print('All Fruits Already Displayed')
        break
    else:
        print(randFruit)

一种选择是拥有一份
水果的副本
,每次你吃水果时,你都会从随机水果的变量中删除它。对于初学者,你需要实际读取文件并将其转换为字符串列表。现在
fruits
是一个字符串,Python不会自动将其视为一个文件,更不用说您想要的数据结构了。为了处理文件的内容,您需要
open()
并首先读取其内容。是的,您是对的,我只是修改了他的代码以向他展示我的意思。我没有测试它。好吧,测试对于那个问题甚至都不是必要的…而且因为你没有这样做,甚至没有提到这个问题,我怀疑OP会接受你的答案(我不会)。谢谢你的反馈!我修改了答案,以便在读取之前读取该文件。根据他的问题,我只是假设他已经完成了那部分。但我的假设可能是错的。非常感谢。我会的