python函数实现万年历
时间: 2024-08-13 11:05:17 浏览: 67
Python中实现一个简单的万年历功能,可以利用`calendar`模块,该模块提供了处理日历相关的函数。下面是一个简单的例子,展示如何使用`calendar.month()`函数来打印指定月份的日历:
```python
import calendar
def print_yearly_calendar(year, month=1):
# 获取指定年份和月份的日历
cal = calendar.month(year, month)
# 打印日历
print("Calendar for the month of", calendar.month_name[month], year)
print(cal)
# 调用函数并选择年份和月份(默认为当前年份和1月)
print_yearly_calendar()
```
你可以根据需要传递不同的参数,如`print_yearly_calendar(2023, 12)`来查看2023年的12月日历。
相关问题
python实现万年历
以下是Python实现万年历的代码:
```python
# 定义一个函数,用于判断是否为闰年
def is_leap_year(year):
"""
判断是否为闰年
"""
return (year % 4 == 0 and year % 100 != 0) or year % 400 == 0
# 定义一个函数,用于计算每个月的天数
def get_days_of_month(year, month):
"""
计算每个月的天数
"""
# 判断是否为闰年
if is_leap_year(year) and month == 2:
return 29
else:
return [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1]
# 定义一个函数,用于计算某一天是星期几
def get_weekday(year, month, day):
"""
计算某一天是星期几
"""
if month < 3:
month += 12
year -= 1
week = (day + 2 * month + 3 * (month + 1) // 5 + year + year // 4 - year // 100 + year // 400) % 7
return week + 1
# 定义一个函数,用于打印某一年某一月的日历
def print_calendar(year, month):
"""
打印某一年某一月的日历
"""
# 打印标题
print('%s年%s月' % (year, month))
print('一 二 三 四 五 六 日')
# 计算本月第一天是星期几
first_day_week = get_weekday(year, month, 1)
# 打印第一行空格
print(' ' * (first_day_week - 1), end='')
# 打印日历
for day in range(1, get_days_of_month(year, month) + 1):
print('%2d' % day, end=' ')
if get_weekday(year, month, day) == 7:
print()
# 打印最后一行空格
last_day_week = get_weekday(year, month, get_days_of_month(year, month))
if last_day_week != 7:
print(' ' * (7 - last_day_week))
# 测试代码
print_calendar(2021, 1)
print()
print_calendar(2021, 2)
```
运行结果:
```
2021年1月
一 二 三 四 五 六 日
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
2021年2月
一 二 三 四 五 六 日
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
```
Python实现万年历
以下是Python实现万年历的代码:
```python
# 定义函数,判断某一年是否为闰年
def is_leap(year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return True
else:
return False
# 定义函数,计算某一年的总天数
def total_days(year):
total = 0
for y in range(1900, year):
if is_leap(y):
total += 366
else:
total += 365
return total
# 定义函数,计算某一月的天数
def month_days(year, month):
if month in [1, 3, 5, 7, 8, 10, 12]:
return 31
elif month == 2:
if is_leap(year):
return 29
else:
return 28
else:
return 30
# 按照格式输出日历
def print_calendar(year, month):
# 定义变量,记录当前日期
day = 1
# 计算当前月份的第一天是星期几
first_day = (total_days(year) + sum([month_days(year, m) for m in range(1, month)])) % 7
# 输出月份和星期几的表头
print("{0}年{1}月".format(year, month))
print("日 一 二 三 四 五 六")
# 输出日历
for i in range(6):
for j in range(7):
if i == 0 and j < first_day or day > month_days(year, month):
print(" ", end="")
else:
print("{0:2d}".format(day), end="")
day += 1
if j < 6:
print(" ", end="")
print()
# 测试代码
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
print_calendar(year, month)
```
在运行代码时,需要输入指定的年份和月份,程序会输出该月份的日历。例如:
```
请输入年份:2021
请输入月份:10
2021年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
```
这就是Python实现万年历的代码。
阅读全文