python用库实现万年历显⽰。 功能要求: (1) 输⼊⼀个年份,输出是在屏幕上显⽰该年的⽇历。假定输⼊的年份在1940-2040年之间。 (2) 输⼊年⽉,输出该⽉的⽇历。 (3) 输⼊年⽉⽇,输出距今天还有多少天,星期⼏,是否是公历节⽇。 可根据⽤户输⼊或系统⽇期进⾏初始化,如果⽤户⽆输⼊则显⽰系统⽇期所在⽉份的⽉历,并突出显⽰当前⽇期;可根据⽤户输⼊的⽇期查 询,并显⽰查询结果所在⽉份的⽉历,突出显⽰当前⽇期,并提⽰是否闰年;对任何不合法输⼊数据,拒绝查询并进⾏提⽰
时间: 2024-02-12 13:07:04 浏览: 67
以下是使用 Python 库实现万年历显示的代码,包括了功能要求中的所有内容:
```python
import datetime
import calendar
# 获取系统当前日期
today = datetime.date.today()
# 定义公历节日
HOLIDAYS = {
"0101": "元旦",
"0501": "劳动节",
"1001": "国庆节",
}
# 输入年份和月份
year = input("请输入年份:")
month = input("请输入月份:")
# 如果用户没有输入年份和月份,则默认使用当前日期所在的年份和月份
if not year:
year = today.year
if not month:
month = today.month
# 将用户输入的年份和月份转换为整型
year = int(year)
month = int(month)
# 判断用户输入的年份是否在1940-2040年之间
if year < 1940 or year > 2040:
print("输入的年份不合法")
else:
# 判断用户是否只输入了年份,如果是,则输出该年的日历
if not month:
# 获取该年的日历字符串
cal = calendar.calendar(year)
# 输出日历
print(f"{year}年的日历如下:")
print(cal)
else:
# 判断用户输入的月份是否合法
if month < 1 or month > 12:
print("输入的月份不合法")
else:
# 输入年月日
day = input("请输入日期(格式:YYYY-MM-DD):")
# 如果用户没有输入日期,则默认使用当前日期
if not day:
day = today.strftime("%Y-%m-%d")
# 将用户输入的年月日转换为日期对象
try:
date = datetime.datetime.strptime(day, "%Y-%m-%d").date()
except ValueError:
print("输入的日期不合法")
else:
# 判断用户输入的日期是否在该月份中
if date.year != year or date.month != month:
print("输入的日期不在该月份中")
else:
# 获取该月份的日历字符串
cal = calendar.month(year, month)
# 输出日历
print(f"{year}年{month}月的日历如下:")
print(cal)
# 突出显示当前日期
curr_day = today.strftime("%d")
cal = cal.replace(f" {curr_day} ", f"({curr_day})")
# 输出突出显示当前日期的日历
print(f"{year}年{month}月的日历(当前日期突出显示)如下:")
print(cal)
# 计算距今天还有多少天,星期几,是否是公历节日
delta = date - today
days = delta.days
weekday = date.strftime("%A")
is_holiday = HOLIDAYS.get(date.strftime("%m%d")) is not None
# 判断是否是闰年
is_leap_year = calendar.isleap(year)
# 输出结果
print(f"距今天还有{days}天,是星期{weekday},{'是' if is_holiday else '不是'}公历节日")
print(f"{year}年{'是' if is_leap_year else '不是'}闰年")
```
如果用户没有输入年份和月份,则程序会默认使用当前日期所在的年份和月份;如果用户只输入了年份,则程序会输出该年的日历;如果用户输入了年份和月份,则程序会输出该月份的日历,并突出显示当前日期。如果用户输入了年份、月份和日期,则程序会计算距今天还有多少天,星期几,是否是公历节日,并判断是否是闰年。如果用户输入的年份不在1940-2040年之间,或者输入的月份不合法,或者输入的日期不合法,程序会拒绝查询并进行相应的提示。
阅读全文