Day 8 小项目:简单日历
项目概述
简单日历项目旨在使用Python创建一个命令行应用程序,它可以显示指定月份的日历,并允许用户输入特定日期的事件。该项目将涉及日期处理、用户输入、数据存储等基本知识。
学习目标
- 使用内置库处理日期和时间。
- 处理用户输入并进行基本验证。
- 使用数据结构存储事件。
- 理解控制流和循环。
项目功能
- 显示指定年月的日历。
- 添加、查看、删除某一日期的事件信息。
- 数据持久化(一般通过文本文件存储事件)。
技术栈
- Python标准库
- 使用
calendar
模块显示日历。 - 使用
datetime
模块处理日期。 - 操作文件进行数据持久化。
项目结构
simple_calendar/
│
├── calendar.py # 主程序文件
└── events.txt # 事件数据存储文件
详细内容
1. 引入必要的库
首先,我们需要引入Python的内置库:calendar
和 datetime
。
import calendar
from datetime import datetime
2. 显示日历
我们可以使用calendar
模块中的month
函数来显示指定月份的日历。代码如下:
def display_calendar(year, month):
print(calendar.month(year, month))
3. 事件管理
我们使用字典来存储事件,字典的键为日期,值为事件列表。
events = {}
def add_event(date, event):
if date in events:
events[date].append(event)
else:
events[date] = [event]
def view_events(date):
return events.get(date, [])
def delete_event(date, event):
if date in events and event in events[date]:
events[date].remove(event)
4. 数据持久化
我们将事件信息存储到文本文件中,以便下次运行程序可以加载这些事件。
def save_events_to_file(filename='events.txt'):
with open(filename, 'w') as file:
for date, event_list in events.items():
for event in event_list:
file.write(f"{date}: {event}\n")
def load_events_from_file(filename='events.txt'):
try:
with open(filename, 'r') as file:
for line in file:
date, event = line.strip().split(": ")
add_event(date, event)
except FileNotFoundError:
pass
5. 主程序逻辑
主程序将处理用户输入,并根据指令进行相应的操作。
def main():
load_events_from_file()
while True:
print("\n--- 简单日历 ---")
year = int(input("请输入年份: "))
month = int(input("请输入月份: "))
display_calendar(year, month)
action = input("选择操作: [1] 添加事件 [2] 查看事件 [3] 删除事件 [4] 退出: ")
if action == '1':
date = input("请输入日期 (YYYY-MM-DD): ")
event = input("请输入事件: ")
add_event(date, event)
save_events_to_file()
elif action == '2':
date = input("请输入日期 (YYYY-MM-DD): ")
events_today = view_events(date)
if events_today:
print(f"{date} 的事件: {', '.join(events_today)}")
else:
print("没有事件。")
elif action == '3':
date = input("请输入日期 (YYYY-MM-DD): ")
event = input("请输入要删除的事件: ")
delete_event(date, event)
save_events_to_file()
elif action == '4':
break
6. 代码运行流程图
以下是该程序的基本运行流程图:
+--------------+
| 启动程序 |
+--------------+
|
v
+--------------+
| 读取事件 |
+--------------+
|
v
+-------------------+
| 显示日历 |
+-------------------+
|
v
+--------------------------+
| 选择操作 (1-添加, 2-查看, 3-删除, 4-退出) |
+--------------------------+
/|\
/ | \
/ | \
v v v
添加 查看 删除
| | |
v v v
保存事件 输出事件 删除事件
| | |
+-----+-----+
|
v
重新选择操作
示例输出
运行程序时,用户的命令行交互示例如下:
--- 简单日历 ---
请输入年份: 2024
请输入月份: 9
September 2024
Mo Tu We Th Fr Sa Su
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
选择操作: [1] 添加事件 [2] 查看事件 [3] 删除事件 [4] 退出: 1
请输入日期 (YYYY-MM-DD): 2024-09-15
请输入事件: 生日聚会
代码完整性与测试
确保在实施该代码时,进行充分的测试,特别是对用户输入的验证(例如,日期格式、月份范围等)。另外,建议添加对非法输入的处理,以提高用户体验。
结论与反思
通过这一项目,学生不仅能掌握Python基础语法,还能学习如何使用Python处理日期,管理简单的数据结构。此外,学生还会理解如何将数据持久化,这是开发实际应用程序的核心能力。
怎么样今天的内容还满意吗?再次感谢观众老爷的观看。
最后,祝您早日实现财务自由,还请给个赞,谢谢!