当前位置: 首页 > news >正文

python: Enumeration Algorithm

 

# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Enumeration Algorithm
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/14 23:26 
# User      :  geovindu
# Product   : PyCharm
# Project   : PyAlgorithms
# File      : Enumeration.py
#class Jewelry:"""珠宝商品数据模型"""def __init__(self, j_id, category, material, price, stock):"""珠宝商品:param j_id: 商品编号:param category: 品类:项链/戒指/手镯/耳饰:param material: 材质:黄金/铂金/钻石/银饰/K金:param price: 单价(元):param stock: 库存数量"""self.j_id = j_idself.category = categoryself.material = materialself.price = priceself.stock = stockdef __repr__(self):return f"【{self.j_id}】{self.category} | {self.material} | 售价:{self.price}元 | 库存:{self.stock}件"# ====================== 枚举算法核心:遍历所有珠宝筛选符合条件商品 ======================
def enumeration_filter_jewelry(jewelry_list, max_budget, target_material=None, target_category=None, min_stock=1):"""枚举算法:遍历全部珠宝,筛选满足约束的商品:param jewelry_list: 全店珠宝列表:param max_budget: 顾客最高预算:param target_material: 指定材质,None不限制:param target_category: 指定品类,None不限制:param min_stock: 最低库存要求:return: 筛选后的可选珠宝列表(全部可行解)"""match_result = []# 枚举:逐个遍历店内所有珠宝(全部候选解)for item in jewelry_list:# 约束1:价格不超过预算if item.price > max_budget:continue# 约束2:库存充足if item.stock < min_stock:continue# 约束3:材质匹配(有指定才校验)if target_material is not None and item.material != target_material:continue# 约束4:品类匹配(有指定才校验)if target_category is not None and item.category != target_category:continue# 全部条件满足,加入可行解集合match_result.append(item)return match_resultdef enum_jewelry_combination(jewelry_list, total_budget):"""枚举两件首饰组合,总价不超过预算:param jewelry_list::param total_budget::return:"""combo_list = []# 第一层枚举项链for necklace in [x for x in jewelry_list if x.category == "项链"]:# 第二层枚举戒指for ring in [x for x in jewelry_list if x.category == "戒指"]:total_price = necklace.price + ring.priceif total_price <= total_budget and necklace.stock > 0 and ring.stock > 0:combo_list.append((necklace, ring, total_price))return combo_listdef init_jewelry_store():"""初始化门店珠宝库存数据:return:"""store_goods = [Jewelry("N001", "项链", "黄金", 5280, 12),Jewelry("N002", "项链", "铂金", 7600, 3),Jewelry("N003", "项链", "钻石", 12800, 5),Jewelry("N004", "项链", "K金", 3680, 8),Jewelry("R001", "戒指", "黄金", 2150, 15),Jewelry("R002", "戒指", "钻石", 9999, 2),Jewelry("R003", "戒指", "银饰", 599, 30),Jewelry("B001", "手镯", "黄金", 8600, 4),Jewelry("B002", "手镯", "银饰", 1280, 22),Jewelry("E001", "耳饰", "K金", 1680, 18),Jewelry("E002", "耳饰", "铂金", 4200, 6),Jewelry("E003", "耳饰", "钻石", 6500, 0),  # 无库存,会被过滤]return store_goods# encoding: utf-8 
# 版权所有  2026 ©涂聚文有限公司™ ®
# 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎
# 描述:Enumeration Algorithm
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2024.3.6 python 3.11
# os        : windows 10
# database  : mysql 9.0 sql server 2019, postgreSQL 17.0  Oracle 21c Neo4j
# Datetime  : 2026/7/14 23:28 
# User      :  geovindu
# Product   : PyCharm
# Project   : PyAlgorithms
# File      : EnumerationBll.pyfrom Enumeration.Enumeration import init_jewelry_store,enumeration_filter_jewelryclass EnumerationBll(object):""""""def demo(self):""":return:"""all_jewelry = init_jewelry_store()print("===== 珠宝门店全部商品(枚举全集) =====")for goods in all_jewelry:print(goods)print("-" * 70)# 场景1:顾客1 预算6000内,不限材质、不限品类,有货即可print("\n【顾客需求1】预算≤6000元,任意品类任意材质,有库存")customer1_result = enumeration_filter_jewelry(all_jewelry, max_budget=6000)if customer1_result:for res in customer1_result:print(res)else:print("无符合条件首饰")# 场景2:顾客2 预算10000内,只想要黄金手镯print("\n【顾客需求2】预算≤10000元,仅黄金手镯")customer2_result = enumeration_filter_jewelry(all_jewelry,max_budget=10000,target_material="黄金",target_category="手镯")for res in customer2_result:print(res)# 场景3:顾客3 预算5000内,铂金耳饰print("\n【顾客需求3】预算≤5000元,铂金耳饰")customer3_result = enumeration_filter_jewelry(all_jewelry,max_budget=5000,target_material="铂金",target_category="耳饰")for res in customer3_result:print(res)# 场景4:顾客4 预算8000,钻石戒指(库存不足/超预算测试)print("\n【顾客需求4】预算≤8000元,钻石戒指")customer4_result = enumeration_filter_jewelry(all_jewelry,max_budget=8000,target_material="钻石",target_category="戒指")print(customer4_result if customer4_result else "无匹配首饰")

  

输出:

image

 

http://www.jsqmd.com/news/1190153/

相关文章:

  • GPT-OSS 20B在机器人领域的落地价值:让终端机器人拥有本地语义大脑
  • 数据科学新手实战路径:pandas→numpy→matplotlib→seaborn→scikit-learn五库协同指南
  • 2026 年新发布:信州可靠的村口门楼生产厂家全面解析与选购指南,打破迷思:这古老门楼的真正价值是什么? - 行业推荐官【认证】
  • Linux计划任务与进程管理核心技巧详解
  • Waze上线AI导航新功能,集成Gemini智能语音与摩托车模式
  • 2026 年当下,西湖优秀的回收达仁堂安宫牛黄丸公司选哪家,别再当垃圾扔了!这药盒可能正悄悄掏空你的钱包 - 行业严选官
  • 前端转型 Agent 开发工程师:从 UI 到 AI 的进阶之路
  • MCP3551与PIC18F25K40高精度ADC系统设计与实现
  • 常见问题由 Agent 自动处理
  • 给几张图片整理中文信息,三个免费版OCR大模型对比
  • 国内清水砼厂家排行:5家主流品牌实力实测对比 - 互联网科技品牌测评
  • LP2985 芯片说明
  • NAU8224与PIC18F65K40音频系统设计与优化
  • 多模态Agent技术解析:从原理到商业应用
  • 2026 年至今,石嘴山热门的会所轻奢电动餐桌生产厂家怎么联系,花几十万装会所,却因一张桌子显廉价?避雷指南来了 - 行业推荐官[官方】--
  • 国产信创可用的FTP传输软件,这几款实用性拉满!
  • C++项目实战入门:从语法到实战的完整学习路径与项目解析
  • Camera | 瑞芯微RK3568平台VCM马达驱动调试与故障排查指南
  • YOLO26涨点改进| TGRS 2026 | Mamba创新改进篇 |引入SSMF(SpaM和SpeM )即插即用模块,通过空间分支与光谱分支的协同作用,助力高光谱目标检测、图像分类任务,有效涨点
  • 2026年中全国GEO优化公司推荐:全维度对比TOP10榜单与常见问题解答 - GEO优化
  • 30天跑通云原生BI试点:从数据接入到一线看数的客户成功验收清单
  • 上海微水泥厂家排行:5个品牌产品与服务实测对比 - 互联网科技品牌测评
  • 打通 AI 编程本地运维边界,利用 MCP 协议简化环境与服务管理
  • 植物大战僵尸杂交版下载安装与兼容性设置指南
  • 泰格豪雅中国官方专柜客户服务电话权威信息声明(2026年7月最新) - 亨得利钟表维修中心
  • GitHub公共API正沦为企业侦察利器
  • 从概念到实现:E-R图在数据库设计全流程中的实战应用
  • 2026年7月最新绍兴宇舶官方售后客户服务电话及线下网点地址 - 亨得利官方服务中心
  • Linux性能分析:火焰图工具使用与实战技巧
  • TMC7300+STM32F207ZG驱动有刷直流电机方案详解