为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

UYOU 2021-11-16 15:03:14
我正在努力让我的代码工作。我的 PC 上存储了大量水果。每次运行程序时,我都希望程序从列表中随机显示一个水果。然后将那个水果保存在myfruitPicked.我的目标是:程序应该始终检查myfruitPicked随机选择的水果是否已经在myfruitPicked. 然后它应该丢弃那个水果并从原始列表中随机选择另一个。当myfruitPicked列表中的水果等于我原始列表中的水果数量时。该程序应该break并打印所有已显示的水果。这个想法是,我不想在运行程序时看到一个水果显示两次。也因为水果清单实在是太大了。我想让代码工作得很好,这样它就不会导致内存问题或减慢程序的速度。例如,假设我在文件中列出了 5 个水果。当我运行该程序时,它应该给我 1 个水果,然后在不关闭程序的情况下,我将再次运行该程序以获得另一个不同的水果,依此类推。现在在显示第 5 个水果后,如果我要求另一个水果,那么程序将中断并打印“所有水果都已显示”。如此基本的程序应该知道我在文件中有多少水果,并且只要它还没有给我它就应该继续提供不同的水果import randommyfruitPicked = ''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)
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

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


查看完整回答
反对 回复 2021-11-16
  • 1 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信