我很难让我的代码工作。
我有一大堆水果存储在我的电脑上。每次运行程序时,我都希望程序从列表中随机显示一个水果。然后在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)
这就是我在评论中的意思。创建水果副本的原因并非如此。因为您将从变量中删除水果,而不是从.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)