实现万年历小程序(含农历)
Python 可以通过 lunarcalendar 和 datetime 库实现万年历功能,农历转换依赖第三方库 lunarcalendar。以下为完整实现方案:
安装依赖库
确保安装 lunarcalendar 和 datetime(后者为 Python 内置库):
pip install lunarcalendar
核心代码实现
from lunarcalendar import Lunar, Solar, Converter
from datetime import datetime
def print_calendar(year, month):
# 打印公历和农历
print(f"\n公历 {year}年{month}月")
print("日 一 二 三 四 五 六")
first_day = datetime(year, month, 1)
weekday = first_day.weekday() # 0-6 对应周一至周日
print(" " * weekday, end="")
for day in range(1, 32):
try:
current_date = datetime(year, month, day)
solar = Solar(current_date.year, current_date.month, current_date.day)
lunar = Converter.Solar2Lunar(solar)
# 对齐输出
print(f"{day:2}", end=" ")
if current_date.weekday() == 6: # 周六换行
print()
except:
break # 超出当月天数
# 显示农历信息(示例:当月第一天农历)
lunar_date = Converter.Solar2Lunar(Solar(year, month, 1))
print(f"\n农历 {lunar_date.year}年{lunar_date.month}月{lunar_date.day}日")
# 示例调用
print_calendar(2023, 10)
功能扩展
-
节假日标记
添加字典标记节假日,例如:holidays = { (1, 1): "元旦", (5, 1): "劳动节", (10, 1): "国庆节" } -
用户交互
通过input让用户输入年份和月份:year = int(input("输入年份:")) month = int(input("输入月份:")) print_calendar(year, month)
输出示例
运行 print_calendar(2023, 10) 会显示:
公历 2023年10月
日 一 二 三 四 五 六
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 31
农历 2023年八月十七日
注意事项
lunarcalendar库的农历日期转换范围为 1900-2100 年。- 如需更复杂的界面,可结合
tkinter或PyQt实现 GUI。
746

被折叠的 条评论
为什么被折叠?



