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)
解决方案
这就是我在评论中的意思。创建水果副本的原因并不是那么必要。因为您将从变量中删除水果,而不是从 .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)
推荐阅读
- flutter - 如何在颤动中删除选项卡之间的额外空间?
- swift - 如何防止 NSToolbar 重叠 NSViewController 内容?
- botframework - Teams 客户端更新 - 访问此应用时出现问题
- google-sheets - Google 文档遇到错误。请尝试重新加载此页面,或在几分钟后返回此页面
- sql - Oracle plsql检查两侧之间的日期
- google-cloud-platform - 运行terraform申请GCP时连接被拒绝
- javascript - 保存本地存储 JavaScript 检查
- python - 如何部署训练有素的 OpenAI 健身房模型以将股票交易作为应用程序或部署到 backtrader 等回测框架中以预测买入或卖出?
- ios - 设置 UIBarButtonItem.appearance() 在 iOS 15 上不起作用
- java - 无法为轴 1.4 的 wsdl 生成代码,尽管在 SoapUI 导入时已成功使用