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

2024-06-23 02:49:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力使代码正常工作。
我的电脑上有一个很大的水果列表。每当我运行这个程序时,我都希望程序随机显示列表中的一个水果。然后把水果保存在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)

Tags: 文件内存代码程序目标列表randomprint
1条回答
网友
1楼 · 发布于 2024-06-23 02:49:18

这就是我在评论中的意思。创建一个水果副本的理由并不是那么必要。因为您将从变量中移除结果,而不是从.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)

相关问题 更多 >