随机显示和存储而不重复存储值

问题描述 投票:0回答:1

我很难让我的代码工作。 我有一大堆水果存储在我的电脑上。每次运行程序时,我都希望程序从列表中随机显示一个水果。然后在myfruitPicked保存那个水果。

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

我的想法是,我不希望在运行程序的任何时候看到一个水果显示两次。还因为水果单很大。我希望代码能够很好地工作,因此它不会导致内存问题或程序运行缓慢。

例如,假设我在文件中列出了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)
python random
1个回答
1
投票

这就是我在评论中的意思。创建水果副本的原因并非如此。因为您将从变量中删除水果,而不是从.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)
© www.soinside.com 2019 - 2024. All rights reserved.