智能衣柜—穿搭助手系统
一、核心代码(模块化设计)
- 配置文件( "config.py")
集中管理常量与参数,便于扩展。
配置模块:系统常量与参数
class Config:
# 温湿度阈值(湿度>70%启动除湿)
HUMIDITY_THRESHOLD = 70
TEMP_THRESHOLD = 30 # 温度阈值(可选扩展制冷)
# 衣物属性字段
CLOTHING_FIELDS = ["id", "name", "category", "last_worn", "wear_count", "season"]
# 退出命令
EXIT_CMD = "退出"
WELCOME_MSG = "欢迎使用智能衣柜—穿搭助手!"
- 传感器模拟模块( "sensor_simulator.py")
模拟温湿度传感器数据读取(实际可对接DHT11等硬件)。
传感器模拟:生成随机温湿度数据(实际替换为硬件读取)
import random from config import Config
def read_sensor_data(): """模拟读取温湿度传感器数据""" humidity = random.randint(50, 90) # 湿度50%-90% temperature = random.randint(20, 35) # 温度20-35℃ return {"humidity": humidity, "temperature": temperature}
- 除湿控制模块( "dehumidifier.py")
根据湿度阈值控制除湿功能。
除湿控制:湿度超标时启动除湿
from sensor_simulator import read_sensor_data from config import Config
def check_humidity_and_control(): """检查湿度并控制除湿""" data = read_sensor_data() humidity = data["humidity"] if humidity > Config.HUMIDITY_THRESHOLD: print(f"⚠️ 湿度过高({humidity}%),启动除湿功能...") return {"status": "运行中", "humidity": humidity} else: print(f"✅ 湿度正常({humidity}%),无需除湿") return {"status": "待机", "humidity": humidity}
- 衣物管理模块( "wardrobe_manager.py")
用类封装衣物信息,支持增删改查与穿着记录。
衣物管理:记录衣物属性与穿着历史
import json from datetime import datetime from config import Config
class Wardrobe: def init(self): self.clothes = [] # 衣物列表,每个元素为字典 self.load_data() # 初始化时加载数据(模拟文件存储)
def add_clothing(self, name, category, season):
"""添加新衣物"""
new_id = len(self.clothes) + 1
self.clothes.append({
"id": new_id,
"name": name,
"category": category, # 如上衣/裤子
"last_worn": None, # 上次穿着时间(YYYY-MM-DD)
"wear_count": 0, # 穿着次数
"season": season # 适用季节:春/夏/秋/冬
})
self.save_data()
def record_wear(self, clothing_id):
"""记录衣物穿着"""
for item in self.clothes:
if item["id"] == clothing_id:
item["last_worn"] = datetime.now().strftime("%Y-%m-%d")
item["wear_count"] += 1
self.save_data()
return True
return False # 未找到衣物
def get_least_worn(self, limit=3):
"""推荐久未穿的衣物(按last_worn升序)"""
sorted_clothes = sorted(
self.clothes,
key=lambda x: x["last_worn"] or "1970-01-01" # 未穿过排最前
)
return sorted_clothes[:limit] # 返回前limit件
def save_data(self):
"""模拟保存数据到文件(实际用json.dump)"""
pass # 简化为内存存储,实际可扩展文件读写
def load_data(self):
"""模拟加载数据(初始为空列表)"""
self.clothes = []
5. 推荐算法模块( "recommender.py")
基于穿着频率推荐久未穿衣物。
推荐算法:调用Wardrobe的get_least_worn方法
from wardrobe_manager import Wardrobe
def recommend_outfit(wardrobe, limit=3): """推荐久未穿的衣物""" return wardrobe.get_least_worn(limit)
- 用户交互模块( "user_interface.py")
命令行交互,整合各模块功能。
用户交互:处理输入输出与功能调度
from dehumidifier import check_humidity_and_control from wardrobe_manager import Wardrobe from recommender import recommend_outfit from config import Config
def display_menu(): print("\n===== 功能菜单 =====") print("1. 查看温湿度并控制除湿") print("2. 添加衣物到衣柜") print("3. 记录衣物穿着") print("4. 获取穿搭推荐(久未穿)") print(f"输入'{Config.EXIT_CMD}'退出")
def run_interaction(): wardrobe = Wardrobe() # 初始化衣柜 print(Config.WELCOME_MSG) while True: display_menu() choice = input("\n请选择功能:").strip() if choice == Config.EXIT_CMD: print("感谢使用,再见!") break elif choice == "1": check_humidity_and_control() elif choice == "2": name = input("衣物名称:") category = input("类别(如上衣/裤子):") season = input("适用季节(春/夏/秋/冬):") wardrobe.add_clothing(name, category, season) print(f"✅ 已添加:{name}") elif choice == "3": cid = int(input("衣物ID:")) if wardrobe.record_wear(cid): print("✅ 穿着记录已更新") else: print("❌ 未找到该衣物") elif choice == "4": recs = recommend_outfit(wardrobe) print("\n📌 推荐久未穿的衣物:") for item in recs: print(f"ID:{item['id']} {item['name']}(上次穿:{item['last_worn'] or '从未'})") else: print("❌ 无效选择,请重试")
- 程序入口( "main.py")
整合模块启动系统。
程序入口
from user_interface import run_interaction
if name == "main": try: run_interaction() except Exception as e: print(f"程序出错:{e}")
二、README文件( "README.md")
智能衣柜—穿搭助手
项目简介
基于Python的智能衣柜系统,集成温湿度监测(防霉除湿)、衣物穿着记录、久未穿推荐功能,模拟智能产品控制逻辑,支持模块化扩展。
核心功能
- 环境监测:模拟温湿度传感器,湿度>70%自动启动除湿
- 衣物管理:添加衣物、记录穿着次数与日期
- 穿搭推荐:按“最久未穿”原则推荐衣物,避免重复
- 交互界面:命令行菜单操作,简单易用
安装与使用
环境要求
- Python 3.8+
- 无额外依赖(纯标准库)
使用步骤
- 下载代码:保存上述7个
.py文件到同一文件夹 - 运行程序:
python main.py - 操作示例:
欢迎使用智能衣柜—穿搭助手!
===== 功能菜单 =====
- 查看温湿度并控制除湿
- 添加衣物到衣柜...请选择功能:2衣物名称:蓝色衬衫类别(如上衣/裤子):上衣适用季节(春/夏/秋/冬):夏✅ 已添加:蓝色衬衫
目录结构
├── config.py # 配置常量
├── sensor_simulator.py # 温湿度传感器模拟
├── dehumidifier.py # 除湿控制
├── wardrobe_manager.py # 衣物管理(类封装)
├── recommender.py # 推荐算法
├── user_interface.py # 命令行交互
└── main.py # 程序入口
扩展方向
- 硬件对接:用树莓派+DHT11传感器读取真实温湿度
- GUI界面:用Tkinter/PyQt开发图形界面
- 数据存储:用SQLite数据库持久化衣物信息
三、使用说明
- 准备环境:安装Python 3.8+("官网下载" (www.python.org/downloads/)…
- 运行程序:
- 创建文件夹(如 "smart_wardrobe"),放入所有 ".py"文件
- 终端执行 "cd smart_wardrobe && python main.py"
- 操作流程:
- 选1:查看温湿度,湿度超标自动提示启动除湿
- 选2:添加衣物(名称、类别、季节)
- 选3:输入衣物ID记录穿着(更新last_worn和wear_count)
- 选4:获取久未穿衣物推荐(按上次穿着时间排序)
四、核心知识点卡片
知识点 说明 代码应用示例 模块化设计 拆分传感器、控制、管理等独立模块 "sensor_simulator.py"与 "dehumidifier.py"分离 类与对象 用 "Wardrobe"类封装衣物管理逻辑 "wardrobe = Wardrobe()"实例化衣柜 字典数据结构 存储衣物属性(id/name/last_worn等) "clothes"列表中的字典元素 排序算法 "sorted()"按last_worn推荐久未穿衣物 "sorted(clothes, key=lambda x: x["last_worn"])" 异常处理 "try...except"捕获运行错误 "main.py"中捕获通用异常并打印 模拟硬件交互 用随机数模拟传感器数据 "random.randint(50, 90)"生成湿度值 文件I/O(扩展) 用 "json"持久化衣物数据(当前简化) "save_data()"/ "load_data()"方法
运行效果示例
欢迎使用智能衣柜—穿搭助手!
===== 功能菜单 =====
- 查看温湿度并控制除湿
...
请选择功能:1
⚠️ 湿度过高(85%),启动除湿功能...
请选择功能:4
📌 推荐久未穿的衣物:
ID:1 蓝色衬衫(上次穿:从未)
ID:2 牛仔裤(上次穿:2025-12-15)
系统可通过扩展 "wardrobe_manager.py"实现文件存储,或对接真实传感器提升实用性。 关注我,有更多实用程序等着你!