当前位置:首页>python>Day7:Python综合实战!打造你的"办公室运势"生成器

Day7:Python综合实战!打造你的"办公室运势"生成器

  • 2026-09-21 12:00:59
Day7:Python综合实战!打造你的"办公室运势"生成器

学了一周Python,是时候验收成果了!用6天学的所有技能,打造一个真正有用的办公工具!

一、项目目标:办公室今日运势生成器

这个工具将帮你:

  1. 随机生成每日办公运势
  2. 记录每日心情和工作状态
  3. 统计分析一周工作状态
  4. 导出运势报告

二、完整代码实现

"""办公室今日运势生成器综合运用:变量、条件判断、循环、列表、函数、字典"""import randomimport jsonimport datetimefrom collections import defaultdictclass 办公室运势生成器:    def __init__(self):"""初始化生成器"""# 基础数据        self.幸运颜色列表 = ["红色", "蓝色", "绿色", "黄色", "紫色", "白色", "黑色"]        self.幸运数字列表 = list(range(1, 101))# 运势模板        self.运势等级 = ["大吉", "中吉", "小吉", "平", "小凶", "大凶"]        self.宜做事项 = ["主动汇报工作", "整理文档", "学习新技能", "与同事沟通","制定计划", "完成积压任务", "向上级请教", "帮助同事","参加培训", "优化工作流程", "提前完成工作", "复盘总结"        ]        self.忌做事项 = ["拖延工作", "背后议论同事", "上班迟到", "工作分心","推卸责任", "抱怨领导", "频繁请假", "工作马虎","违反规定", "情绪化工作", "过度加班", "忽视健康"        ]        self.工作建议 = ["保持专注,效率第一", "注意沟通方式", "劳逸结合","提前规划,避免匆忙", "多听少说", "保持积极心态","注意细节", "主动学习", "团队合作", "及时反馈"        ]# 存储每日运势记录        self.运势记录 = {}    def 生成今日运势(self, 姓名, 职位="教师", 心情="一般"):"""生成今日运势"""# 随机选择各项内容        运势等级 = random.choice(self.运势等级)        幸运颜色 = random.choice(self.幸运颜色列表)        幸运数字 = random.choice(self.幸运数字列表)# 随机选择2-4项宜做和忌做事项        今日宜做 = random.sample(self.宜做事项, random.randint(2, 4))        今日忌做 = random.sample(self.忌做事项, random.randint(2, 4))        今日建议 = random.choice(self.工作建议)# 根据运势等级生成评语        运势评语 = self.生成运势评语(运势等级)# 获取当前日期        当前日期 = datetime.datetime.now().strftime("%Y-%m-%d %A")# 构建运势字典        今日运势 = {"date": 当前日期,"name": 姓名,"position": 职位,"mood": 心情,"fortune_level": 运势等级,"lucky_color": 幸运颜色,"lucky_number": 幸运数字,"should_do": 今日宜做,"avoid_do": 今日忌做,"advice": 今日建议,"comment": 运势评语,"generated_time": datetime.datetime.now().strftime("%H:%M:%S")        }# 保存记录        self.运势记录[当前日期] = 今日运势return 今日运势    def 生成运势评语(self, 运势等级):"""根据运势等级生成评语"""        评语库 = {"大吉": "今天是充满机遇的一天!工作顺利,人际关系和谐,适合推进重要项目。","中吉": "整体运势不错,工作中可能有小惊喜。保持积极态度,会有好结果。","小吉": "平稳的一天,按计划行事即可。注意细节,避免小失误。","平": "运势一般,宜守不宜攻。做好本职工作,避免冒险决策。","小凶": "今天可能遇到小挫折,保持冷静。注意沟通,避免误会。","大凶": "今天挑战较多,需特别谨慎。多检查工作,避免出错。"        }return 评语库.get(运势等级, "保持平常心,认真工作。")    def 显示运势(self, 运势数据):"""格式化显示运势"""print("\n" + "="*50)print(f"📅 办公室今日运势 - {运势数据['date']}")print("="*50)print(f"👤 姓名:{运势数据['name']}")print(f"💼 职位:{运势_data['position']}")print(f"😊 心情:{运势_data['mood']}")print(f"🎯 运势等级:{运势_data['fortune_level']}")print(f"🎨 幸运颜色:{运势_data['lucky_color']}")print(f"🔢 幸运数字:{运势_data['lucky_number']}")print("\n✅ 今日宜做:")for i, 事项 in enumerate(运势_data['should_do'], 1):print(f"   {i}. {事项}")print("\n❌ 今日忌做:")for i, 事项 in enumerate(运势_data['avoid_do'], 1):print(f"   {i}. {事项}")print(f"\n💡 工作建议:{运势_data['advice']}")print(f"\n📝 运势评语:{运势_data['comment']}")print(f"\n⏰ 生成时间:{运势_data['generated_time']}")print("="*50)    def 保存运势(self, 运势数据, 文件名=None):"""保存运势到文件"""if 文件名 is None:            文件名 = f"{运势数据['name']}_{运势数据['date'].split()[0]}_运势.json"        with open(文件名, 'w', encoding='utf-8') as f:            json.dump(运势数据, f, ensure_ascii=False, indent=2)print(f"✅ 运势已保存到:{文件名}")return 文件名    def 记录心情和工作(self, 日期, 心情, 工作状态, 完成事项):"""记录每日心情和工作状态"""if 日期 not in self.运势记录:print(f"⚠️  {日期}没有运势记录,请先生成运势")return False        self.运势记录[日期].update({"实际心情": 心情,"工作状态": 工作状态,"完成事项": 完成事项,"记录时间": datetime.datetime.now().strftime("%H:%M:%S")        })print(f"✅ 已记录{日期}的工作状态")return True    def 生成周报(self, 开始日期, 结束日期):"""生成一周运势和工作总结"""print(f"\n📊 周报统计:{开始日期} 至 {结束日期}")print("="*60)        总天数 = 0        心情统计 = defaultdict(int)        运势统计 = defaultdict(int)        完成事项总计 = []for 日期, 记录 in self.运势记录.items():            记录日期 = 日期.split()[0]if 开始日期 <= 记录日期 <= 结束日期:                总天数 += 1# 统计心情if"实际心情"in 记录:                    心情统计[记录["实际心情"]] += 1# 统计运势                运势统计[记录["fortune_level"]] += 1# 收集完成事项if"完成事项"in 记录:                    完成事项总计.extend(记录["完成事项"])# 显示统计结果print(f"📅 统计天数:{总天数}天")if 心情统计:print("\n😊 心情分布:")for 心情, 天数 in 心情统计.items():                占比 = (天数 / 总天数) * 100print(f"  {心情}:{天数}天 ({占比:.1f}%)")if 运势统计:print("\n🎯 运势分布:")for 运势, 天数 in 运势统计.items():                占比 = (天数 / 总天数) * 100print(f"  {运势}:{天数}天 ({占比:.1f}%)")if 完成事项总计:print(f"\n✅ 本周共完成 {len(完成事项总计)} 项工作")print("主要工作内容:")            事项统计 = defaultdict(int)for 事项 in 完成事项总计:                事项统计[事项] += 1# 显示出现次数最多的5个事项for 事项, 次数 in sorted(事项统计.items(), key=lambda x: x[1], reverse=True)[:5]:print(f"  · {事项} ({次数}次)")# 生成总结print("\n📝 本周总结:")if 心情统计:            主要心情 = max(心情统计.items(), key=lambda x: x[1])[0]if 主要心情 in ["开心", "愉悦", "满意"]:print("  👍 本周整体心情积极,工作状态良好!")elif 主要心情 in ["一般", "平静"]:print("  👌 本周工作状态平稳,继续保持。")else:print("  🤔 本周心情有波动,注意调节工作状态。")if 运势统计:            主要运势 = max(运势统计.items(), key=lambda x: x[1])[0]if 主要运势 in ["大吉", "中吉"]:print("  🍀 本周运势不错,工作进展顺利!")elif 主要运势 in ["小吉", "平"]:print("  📈 本周运势平稳,稳扎稳打即可。")else:print("  ⚠️  本周挑战较多,注意谨慎行事。")return {"总天数": 总天数,"心情统计": dict(心情统计),"运势统计": dict(运势统计),"完成事项": 完成事项总计        }    def 导出所有记录(self, 文件名="办公室运势记录.json"):"""导出所有运势记录"""        with open(文件名, 'w', encoding='utf-8') as f:            json.dump(self.运势记录, f, ensure_ascii=False, indent=2)print(f"✅ 所有记录已导出到:{文件名}")return 文件名# 使用示例def 主程序():"""主程序:演示运势生成器的使用"""print("🏢 办公室运势生成器 v1.0")print("="*50)# 创建生成器实例    生成器 = 办公室运势生成器()# 示例:生成今日运势print("\n1. 生成今日运势")    今日运势 = 生成器.生成今日运势("张老师", "语文教师", "开心")    生成器.显示运势(今日运势)# 保存运势    生成器.保存运势(今日运势)# 示例:记录工作状态print("\n2. 记录今日工作状态")    今天日期 = datetime.datetime.now().strftime("%Y-%m-%d")# 模拟完成的工作事项    完成事项 = ["批改学生作业","准备家长会材料","参加教研活动","整理教学资料"    ]    生成器.记录心情和工作(        日期=f"{今天日期} Monday",        心情="满意",        工作状态="高效",        完成事项=完成事项    )# 示例:生成多日运势(模拟一周数据)print("\n3. 生成一周运势记录(模拟)")    模拟日期 = ["2023-10-09 Monday","2023-10-10 Tuesday", "2023-10-11 Wednesday","2023-10-12 Thursday","2023-10-13 Friday"    ]    模拟心情 = ["开心", "一般", "平静", "满意", "疲惫"]    模拟工作状态 = ["高效", "正常", "一般", "良好", "一般"]for i, 日期 in enumerate(模拟日期):        运势 = 生成器.生成今日运势("张老师", "语文教师", 模拟心情[i])# 模拟每日完成事项        模拟完成事项 = []for j in range(random.randint(3, 6)):            事项 = random.choice(["备课", "上课", "批改作业", "学生辅导","会议", "材料整理", "教学研究", "培训学习"            ])            模拟完成事项.append(事项)        生成器.记录心情和工作(            日期=日期,            心情=模拟心情[i],            工作状态=模拟工作状态[i],            完成事项=模拟完成事项        )# 生成周报print("\n4. 生成周报总结")    周报数据 = 生成器.生成周报("2023-10-09", "2023-10-13")# 导出所有记录print("\n5. 导出所有记录")    生成器.导出所有记录()# 互动功能print("\n6. 自定义生成运势")    自定义姓名 = input("请输入你的姓名:") or "张老师"    自定义职位 = input("请输入你的职位:") or "教师"    自定义心情 = input("请输入今天的心情:") or "一般"    自定义运势 = 生成器.生成今日运势(自定义姓名, 自定义职位, 自定义心情)    生成器.显示运势(自定义运势)# 保存自定义运势    保存选择 = input("\n是否保存这份运势?(y/n):")if 保存选择.lower() == 'y':        生成器.保存运势(自定义运势, f"{自定义姓名}_今日运势.json")# 运行主程序if __name__ == "__main__":    主程序()

三、代码分步解析

3.1 类的初始化(第1天学的变量)

def __init__(self):# 创建各种列表(列表知识 - 第4天)    self.幸运颜色列表 = ["红色", "蓝色", "绿色", "黄色", "紫色", "白色", "黑色"]    self.幸运数字列表 = list(range(1, 101))# 创建运势模板(字符串和列表 - 第1、4天)    self.运势等级 = ["大吉", "中吉", "小吉", "平", "小凶", "大凶"]    self.宜做事项 = ["主动汇报工作", "整理文档", ...]

对应知识点:

  • 变量定义(第1天)

  • 列表创建(第4天)

  • range()函数(第3天)

3.2 生成今日运势(综合运用)

def 生成今日运势(self, 姓名, 职位="教师", 心情="一般"):# 随机选择(random模块)    运势等级 = random.choice(self.运势等级)    幸运颜色 = random.choice(self.幸运颜色列表)    幸运数字 = random.choice(self.幸运数字列表)# 随机抽样(第3天循环的应用)    今日宜做 = random.sample(self.宜做事项, random.randint(2, 4))    今日忌做 = random.sample(self.忌做事项, random.randint(2, 4))# 条件判断(第2天)    运势评语 = self.生成运势评语(运势等级)# 日期处理(datetime模块)    当前日期 = datetime.datetime.now().strftime("%Y-%m-%d %A")# 构建字典(第6天)    今日运势 = {"date": 当前日期,"name": 姓名,# ... 更多键值对    }

对应知识点:

  • 函数定义和参数(第5天)

  • 条件判断(第2天)

  • 字典操作(第6天)

  • 随机选择(random模块)

3.3 显示运势(格式化输出)

def 显示运势(self, 运势数据):print("\n" + "="*50)  # 字符串乘法print(f"📅 办公室今日运势 - {运势_data['date']}")print(f"👤 姓名:{运势_data['name']}")print(f"💼 职位:{运势_data['position']}")# 遍历列表(第3天)print("\n✅ 今日宜做:")for i, 事项 in enumerate(运势_data['should_do'], 1):print(f"   {i}. {事项}")

对应知识点:

  • 字符串格式化(第1天)

  • for循环(第3天)

  • enumerate()函数(第3天)

  • 字典访问(第6天)

3.4 记录和统计功能(数据分析)

def 记录心情和工作(self, 日期, 心情, 工作状态, 完成事项):# 检查键是否存在(第6天)if 日期 not in self.运势记录:print(f"⚠️  {日期}没有运势记录")return False# 更新字典(第6天)    self.运势记录[日期].update({"实际心情": 心情,"工作状态": 工作状态,"完成事项": 完成事项    })

对应知识点:

  • 字典的in操作(第6天)

  • 字典的update()方法(第6天)

  • 列表作为字典值(第4、6天)

3.5 周报生成(数据统计)

def 生成周报(self, 开始日期, 结束日期):    总天数 = 0    心情统计 = defaultdict(int)  # 默认字典    运势统计 = defaultdict(int)# 遍历字典(第6天)for 日期, 记录 in self.运势记录.items():        记录日期 = 日期.split()[0]# 条件判断筛选日期(第2天)if 开始日期 <= 记录日期 <= 结束日期:            总天数 += 1# 统计心情if"实际心情"in 记录:                心情统计[记录["实际心情"]] += 1# 计算百分比if 心情统计:print("\n😊 心情分布:")for 心情, 天数 in 心情统计.items():            占比 = (天数 / 总天数) * 100  # 数学运算print(f"  {心情}:{天数}天 ({占比:.1f}%)")

对应知识点:

  • 字典遍历(第6天)

  • 条件判断(第2天)

  • 数学运算和格式化(第1天)

  • defaultdict使用(第6天扩展)

3.6 文件操作(数据持久化)

def 保存运势(self, 运势数据, 文件名=None):# 默认文件名if 文件名 is None:        文件名 = f"{运势_data['name']}_{运势_data['date'].split()[0]}_运势.json"# 保存到JSON文件    with open(文件名, 'w', encoding='utf-8') as f:        json.dump(运势数据, f, ensure_ascii=False, indent=2)

对应知识点:

  • 文件操作(第5天提到过)

  • JSON格式处理

  • 字符串操作(第1天)

四、第一阶段知识点回顾

4.1 第1-6天核心知识点应用

天数
知识点
在本项目中的应用
第1天
变量、字符串
存储用户信息、格式化输出
第2天
条件判断
根据运势等级生成不同评语
第3天
循环
遍历列表、生成多日记录
第4天
列表
存储运势选项、完成事项
第5天
函数
模块化代码、提高复用性
第6天
字典
存储结构化数据、快速查找

4.2 项目扩展练习

练习1:添加更多功能

# 你可以尝试添加这些功能:# 1. 添加星座运势# 2. 生成月度报告# 3. 添加同事互动功能# 4. 制作可视化图表

练习2:优化现有功能

# 尝试优化:# 1. 让运势生成更"智能"(根据职位、心情调整)# 2. 添加数据验证(确保输入正确)# 3. 制作图形界面(使用tkinter)# 4. 添加数据库支持(保存更多历史记录)

练习3:实际应用

# 将这个工具应用到实际工作:# 1. 每天早上生成运势,规划一天工作# 2. 记录每天工作完成情况# 3. 每周五生成周报,复盘一周工作# 4. 分享给同事,一起使用

五、第一阶段学习总结

经过7天的学习,你已经掌握了:

✅ 已掌握技能

    1. Python基础语法 :变量、数据类型、运算符
    2. 流程控制:条件判断、循环
    3. 数据结构:列表、字典
    4. 函数编程:定义函数、参数传递、返回值
    5. 文件操作 :读写文本文件、JSON格式
    6. 模块使用:random、datetime、json

    🎯 能实现的功能

      1. 自动化处理文本和数据
      2. 批量处理文件
      3. 生成报告和文档
      4. 数据统计和分析
      5. 简单的办公自动化工具

      🚀 下一步学习方向

      从明天开始,我们将进入第二阶段:数据处理与分析!

      六、明日预告

      第8天:遇见Pandas!这个"熊猫"不吃竹子,专吃Excel

      你将学到:

      • 如何用Pandas读取Excel和CSV文件

      • 数据查看和基本信息获取

      • 第一眼就了解你的数据

      公众号:数字编程回复"Py-Day7"获取完整代码文件

      最新文章

      随机文章