垃圾分类

下载


import json
import os

class GarbageManager:
    def __init__(self, file_path="garbage_data.json"):
        self.file_path = file_path
        self.data = self._load_data()
    
    def _load_data(self):
        """加载持久化数据"""
        try:
            if os.path.exists(self.file_path):
                with open(self.file_path, 'r', encoding='utf-8') as f:
                    return json.load(f)
            return {}
        except Exception as e:
            print(f"数据加载失败: {str(e)}")
            return {}

    def save_data(self):
        """保存数据到文件"""
        try:
            with open(self.file_path, 'w', encoding='utf-8') as f:
                json.dump(self.data, f, ensure_ascii=False, indent=2)
            return True
        except Exception as e:
            print(f"数据保存失败: {str(e)}")
            return False

    def add_category(self, category_name):
        """添加新分类"""
        if category_name not in self.data:
            self.data[category_name] = []
            return True
        return False

    def add_garbage_item(self, category_name, item_name):
        """添加垃圾到指定分类"""
        if category_name in self.data:
            if item_name not in self.data[category_name]:
                self.data[category_name].append(item_name)
                return True
        return False

    def query_category(self, item_name):
        """查询垃圾所属分类"""
        for category, items in self.data.items():
            if item_name in items:
                return category
        return None

    def delete_garbage_item(self, shan):
        for fenleiming, wupin in self.data.items():
            if shan in wupin:
                target = shan
                newlist = [x for x in wupin if x != target]
                self.data[fenleiming] = newlist
                return fenleiming
        return None

def main():
    manager = GarbageManager()
    
    while True:
        print("\n垃圾分类管理系统")
        print("1. 添加分类")
        print("2. 添加垃圾项")
        print("3. 查询分类")
        print("4. 删除垃圾项")
        print("5. 退出")
        
        choice = input("请选择操作: ").strip()
        
        try:
            if choice == '1':
                category = input("请输入新分类名称: ").strip()
                if manager.add_category(category):
                    print("分类添加成功")
                else:
                    print("分类已存在")
            
            elif choice == '2':
                category = input("请输入目标分类: ").strip()
                item = input("请输入垃圾名称: ").strip()
                if manager.add_garbage_item(category, item):
                    print("添加成功")
                else:
                    print("添加失败(分类不存在或项目已存在)")
            
            elif choice == '3':
                item = input("请输入要查询的垃圾名称: ").strip()
                category = manager.query_category(item)
                if category:
                    print(f"'{item}' 属于 [{category}]")
                else:
                    print("未找到该垃圾的分类信息")

            elif choice == '4':
                A = input("请输入要删除的垃圾名称:").strip()
                jieguo = manager.delete_garbage_item(A)
                if A:
                    print("删除已完成")
                else:
                    print("无该垃圾项")
            
            elif choice == '5':
                if manager.save_data():
                    print("数据已保存")
                break
            
            else:
                print("无效的输入,请重新选择")
        
        except KeyboardInterrupt:
            print("\n操作已取消")
        except Exception as e:
            print(f"发生错误: {str(e)}")

if __name__ == "__main__":
    main()


爽爽爽

posted @ 2025-04-12 17:17  Ratio_Y  阅读(37)  评论(4)    收藏  举报