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

个人日记系统00

首先,这个程序是做什么的?

这是一个简单的"个人日记系统",就像电子版的日记本,你可以:

  1. 写新日记

  2. 查看所有日记的列表

  3. 阅读某篇具体日记

  4. 搜索包含特定词的日记

代码结构分解

1. 准备工作(导入工具和准备"日记本")

import datetime  # 导入时间工具,用来记录写日记的时间diaries = []  # 创建一个空列表,就像准备一个空日记本
  • import datetime:就像从工具箱里拿出一个"时钟工具"

  • diaries = []:就像准备一个空的本子,准备放日记

2. 写日记功能(add_diary)

def add_diary():title = input("请输入日记标题:")  # 请用户输入标题content = input("请输入日记内容")  # 请用户输入内容now = datetime.datetime.now()  # 获取当前时间date_str = now.strftime("%Y-%m-%d %H:%M:%S")  # 把时间变成好看的格式diary = {  # 把标题、内容和时间打包成一篇日记"title": title,"content": content,"date": date_str}diaries.append(diary)  # 把这篇日记放进日记本里print("日记添加成功!")  # 告诉用户成功了

这部分代码就像:

  1. 问用户:"标题是什么?内容是什么?"

  2. 看一下现在几点,记下来

  3. 把标题、内容和时间放在一起,做成一篇日记

  4. 把这篇日记放进日记本

  5. 告诉用户:"写好了!"

3. 列出所有日记(list_diary)

def list_diary():if not diaries:  # 检查日记本是不是空的print("暂时没有日记")  # 如果是空的,告诉用户return  # 然后结束这个功能print("\n所有日记:")  # 如果不是空的,开始列出日记print("-"*30)  # 画一条分隔线for i, diary in enumerate(diaries, 1):  # 给每篇日记编号print(f"{i}.[{diary['date']}]{diary['title']}")  # 显示编号、日期和标题

这部分代码就像:

  1. 先看看日记本里有没有日记

  2. 如果没有,说:"还没写日记呢"

  3. 如果有,就把所有日记的编号、日期和标题列出来

4. 查看具体日记(find_diaries)

def find_diaries():if not diaries:  # 检查日记本是不是空的print("暂时没有日记")returnlist_diary()  # 先列出所有日记,让用户看到编号try:index = int(input("请输入要查看的日记编号:")) - 1  # 请用户选择编号if 0 <= index < len(diaries):  # 检查编号是否有效diary = diaries[index]  # 找到用户选择的日记print("\n" + "="*40)  # 画一条分隔线print(f"标题:{diary['title']}")  # 显示标题print(f"日期:{diary['date']}")  # 显示日期print("="*30)print(f"内容:{diary['content']}")  # 显示内容print("="*30)else:print("无效编号")  # 如果编号无效,告诉用户except ValueError:print("请输入有效数字!!!")  # 如果用户输入的不是数字,告诉用户

这部分代码就像:

  1. 先看看日记本里有没有日记

  2. 如果没有,说:"还没写日记呢"

  3. 如果有,先把所有日记列出来

  4. 问用户:"你想看第几篇?"

  5. 找到那篇日记,把它的标题、日期和内容都显示出来

  6. 如果用户输入的不是数字或者说了一个不存在的编号,就告诉用户"不对"

5. 搜索日记(search_diary)

def search_diary():if not diaries:  # 检查日记本是不是空的print("暂时没有日记")returnkeyword = input("请输入关键词:")  # 请用户输入要搜索的词found = False  # 先假设没找到for i, diary in enumerate(diaries, 1):  # 检查每一篇日记# 在标题或内容中搜索关键词(不区分大小写)if keyword.lower() in diary['title'].lower() or keyword.lower() in diary['content'].lower():print(f"{i}.[{diary['date']}]{diary['title']}")  # 如果找到,显示这篇日记found = True  # 标记为找到了if not found:  # 如果一篇都没找到print("未找到相关日记")  # 告诉用户

这部分代码就像:

  1. 先看看日记本里有没有日记

  2. 如果没有,说:"还没写日记呢"

  3. 如果有,问用户:"你想找包含什么词的日记?"

  4. 然后一篇一篇地检查,看标题或内容里有没有这个词

  5. 如果找到了,就把那篇日记显示出来

  6. 如果所有日记都检查完了,一篇都没找到,就说:"没找到"

6. 主菜单(main_menu)

def main_menu():while True:  # 一直循环,直到用户选择退出print("\n=== 个人日记系统 ===")  # 显示菜单标题print("1. 写新日记")print("2. 查看日记列表")print("3. 阅读日记")print("4. 搜索日记")print("5. 退出系统")choice = input("请选择操作 (1-5): ")  # 请用户选择# 根据用户的选择调用相应的功能if choice == "1":add_diary()elif choice == "2":list_diary()elif choice == "3":find_diaries()elif choice == "4":search_diary()elif choice == "5":print("感谢使用个人日记系统!")break  # 退出循环,结束程序else:print("无效选择,请重新输入")  # 如果用户输入了不在1-5之间的数字

这部分代码就像:

  1. 一直显示一个菜单,问用户想做什么

  2. 根据用户的选择,调用相应的功能

  3. 如果用户选择"退出",就说"谢谢使用",然后结束程序

  4. 如果用户输入了不在1-5之间的数字,就说"不对,请重新输入"

7. 启动程序

if __name__ == "__main__":main_menu()  # 当直接运行这个文件时,启动主菜单

这部分代码就像按下了"开始"按钮,让整个程序运行起来。

总结

这个程序就像是一个电子日记本,它:

  1. 有一个"日记本"(diaries列表)来存放所有日记

  2. 提供了几个功能:写日记、看日记列表、读具体日记、搜索日记

  3. 通过一个菜单让用户选择想做什么

  4. 每篇日记都记录了标题、内容和写作时间


文章转载自:

http://Kg9BB5jw.qphdp.cn
http://wuiDdqiw.qphdp.cn
http://Y8WjzhDW.qphdp.cn
http://PQx6YTve.qphdp.cn
http://AqetALtO.qphdp.cn
http://XaGO2niF.qphdp.cn
http://Cvo0310E.qphdp.cn
http://5gqPFCPX.qphdp.cn
http://fZHCOaog.qphdp.cn
http://Kfr5TbH9.qphdp.cn
http://wjqPdo1f.qphdp.cn
http://967FY0WE.qphdp.cn
http://iRgyoJHg.qphdp.cn
http://S5eYuYC5.qphdp.cn
http://8xeCZKH0.qphdp.cn
http://c7owoxHK.qphdp.cn
http://ZTL8jmJH.qphdp.cn
http://Us3LQAEK.qphdp.cn
http://CtweBUpz.qphdp.cn
http://dmrd1McY.qphdp.cn
http://AfQNDn89.qphdp.cn
http://FZV6XKM0.qphdp.cn
http://8O9tgBU0.qphdp.cn
http://DYKa9mV0.qphdp.cn
http://E5uxFNXE.qphdp.cn
http://CE7oPjcV.qphdp.cn
http://uvr47iFz.qphdp.cn
http://aXnT9SYf.qphdp.cn
http://Ck48tGke.qphdp.cn
http://CiprBJrb.qphdp.cn
http://www.dtcms.com/a/373327.html

相关文章:

  • 20.42 QLoRA微调实战:四层提示工程让批量数据生成错误率跌破0.5%
  • S32K3平台eMIOS 应用说明
  • iOS 开发入门指南-HelloWorld
  • HCIE数通/云计算真机实验机架展示
  • 【.Net技术栈梳理】04-核心框架与运行时(线程处理)
  • 量化金融|基于算法和模型的预测研究综述
  • HarmonyOS 数据处理性能优化:算法 + 异步 + 分布式实战
  • 1304. 和为零的 N 个不同整数
  • Java 集合Collection—List
  • leetcode9(跳跃游戏)
  • 在UnionTech OS Server 20 (统信UOS服务器版) 上离线安装PostgreSQL (pgsql) 数据库
  • Azure Logic App 与 Azure Function 对比分析
  • 房屋安全鉴定注意事项
  • 【Go】:mac 环境下GoFrame安装开发工具 gf-cli——gf_darwin_arm64
  • 知识竞赛活动舞台道具全面指南
  • Linux《进程信号(下)》
  • 力扣.1054距离相等的条形码力扣767.重构字符串力扣47.全排列II力扣980.不同路径III力扣509.斐波那契数列(记忆化搜索)
  • 区块链:重构企业数字化的信任核心与创新动力
  • 【系统架构设计师(22)】面向服务的软件架构风格
  • Google Play账户与App突遭封禁?紧急应对与快速重构上架策略
  • 操作系统进程/线程的状态与转换
  • 保姆级教程 | travis-Linux版本安装编译
  • 【HarmonyOS 6】Install Failed: error: failed to install bundle.code:9568322
  • STM32精准控制水流
  • Failed to connect to github.com port 443 after 21s
  • 视频画质差怎么办?AI优化视频清晰度技术原理与实战应用
  • comfyUI 暴露网络restful http接口
  • Python程序使用了Ffmpeg,结束程序后,文件夹中仍然生成音频、视频文件
  • 【CFA三级笔记】资产配置:第二章 资本市场预期(预测资产收益)
  • CSS3核心技术