用Python实现输入某年某月,打印出当月日历功能
时间: 2024-03-05 11:47:31 浏览: 171
可以使用Python中的calendar模块来实现这个功能。下面是一个示例代码:
```python
import calendar
# 输入年份和月份
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
# 打印日历
cal = calendar.month(year, month)
print("以下是%d年%d月的日历:" % (year, month))
print(cal)
```
示例输出:
```
请输入年份:2021
请输入月份:8
以下是2021年8月的日历:
August 2021
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 31
```
这个代码使用了`calendar.month()`函数来获取指定年份和月份的日历字符串,然后使用`print()`函数输出即可。
相关问题
具有每日记账功能的简易日历程序 要求:编写具有图形用户界面(GUI)的日历组件显示日期和时间并进行适当的功能扩充。 主要功能: 1、显示当月日历,当前日期、当前时间; 2、可查询任意月以及任意年的日历; 3、正常运行和退出程序。 4、每日具有记账功能,需要至少包含1)记账id;2)记账类型;3)支出费用;4)关键字(关键字写为一行,关键字数量不限,使用分号分割<需查阅使用>) 5、能够通过关键字查询某一种类型的记账记录。 6、对当月记账类型的汇总;对特定关键字的记账汇总。
好的,我可以为您提供一些实现这个程序的思路:
1. 使用Python语言和Tkinter库来实现GUI界面,并通过datetime模块获取当前日期和时间。
2. 实现日历组件的显示,可以使用Tkinter库中的Calendar模块,或者手动实现一个日历表格。同时,实现查询任意月和任意年的日历功能,可以通过修改日期来实现。
3. 实现记账功能,可以使用Python中的文件读写操作来保存和读取记账记录。每天创建一个新的记账文件,文件名为日期,例如“2022-01-01.txt”。每个文件中,可以使用一行来存储一条记账记录,格式为“id,类型,支出费用,关键字1;关键字2;关键字3”。对于关键字的查询,可以使用Python中的字符串操作来实现。
4. 实现查询某一种类型的记账记录功能,可以遍历所有记录,找到指定类型的记录,并显示在GUI界面上。
5. 实现当月记账类型的汇总,可以遍历所有记录,统计每个类型的支出费用,并将结果显示在GUI界面上。对于特定关键字的记账汇总,可以遍历所有记录,查找包含该关键字的记录,并统计支出费用,同样将结果显示在GUI界面上。
6. 实现正常运行和退出程序功能,可以添加“退出”按钮,并在点击该按钮时关闭GUI界面。
以上是一些基本的思路,具体实现可以根据需要进行调整。
万年历 1)输入年份,判断是否为闰年; 2)输入年月日,判断该日为星期几; 3)输入年份,打出12个月的日历; 4)输入月份,打出该月的日历; 5)要求用多个函数实现。
好的,我可以帮你完成这个万年历程序。我们可以分别实现不同的函数来实现每个功能。
首先,我们来实现判断是否为闰年的函数:
```python
def is_leap(year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return True
else:
return False
```
接下来,我们来实现判断某一天是星期几的函数。这里我们使用 Zeller's congruence 算法来实现:
```python
def day_of_week(year, month, day):
if month < 3:
month += 12
year -= 1
century = year // 100
year_of_century = year % 100
w = (century // 4 - 2 * century + year_of_century + year_of_century // 4 + 13 * (month + 1) // 5 + day - 1) % 7
return w
```
然后,我们来实现打印某一年所有月份日历的函数:
```python
def print_year_calendar(year):
for month in range(1, 13):
print_month_calendar(year, month)
print('\n')
```
接下来,我们来实现打印某一个月日历的函数:
```python
def print_month_calendar(year, month):
# 计算当月第一天是星期几
w = day_of_week(year, month, 1)
# 计算当月天数
if month == 2:
if is_leap(year):
days = 29
else:
days = 28
elif month in [4, 6, 9, 11]:
days = 30
else:
days = 31
# 打印日历表头
print('{:^20}'.format(f'{year}年{month}月'))
print('日 一 二 三 四 五 六')
# 打印日历内容
for i in range(w):
print(' ', end='')
for day in range(1, days + 1):
print(f'{day:2d} ', end='')
w += 1
if w == 7:
print()
w = 0
print()
```
最后,我们将上面的函数整合起来,实现一个完整的万年历:
```python
def is_leap(year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return True
else:
return False
def day_of_week(year, month, day):
if month < 3:
month += 12
year -= 1
century = year // 100
year_of_century = year % 100
w = (century // 4 - 2 * century + year_of_century + year_of_century // 4 + 13 * (month + 1) // 5 + day - 1) % 7
return w
def print_year_calendar(year):
for month in range(1, 13):
print_month_calendar(year, month)
print('\n')
def print_month_calendar(year, month):
# 计算当月第一天是星期几
w = day_of_week(year, month, 1)
# 计算当月天数
if month == 2:
if is_leap(year):
days = 29
else:
days = 28
elif month in [4, 6, 9, 11]:
days = 30
else:
days = 31
# 打印日历表头
print('{:^20}'.format(f'{year}年{month}月'))
print('日 一 二 三 四 五 六')
# 打印日历内容
for i in range(w):
print(' ', end='')
for day in range(1, days + 1):
print(f'{day:2d} ', end='')
w += 1
if w == 7:
print()
w = 0
print()
# 主函数
if __name__ == '__main__':
mode = input('请选择模式:1.判断闰年 2.判断星期几 3.打印全年日历 4.打印某月日历\n')
if mode == '1':
year = int(input('请输入年份:'))
if is_leap(year):
print(f'{year}年是闰年')
else:
print(f'{year}年不是闰年')
elif mode == '2':
year = int(input('请输入年份:'))
month = int(input('请输入月份:'))
day = int(input('请输入日期:'))
w = day_of_week(year, month, day)
week_days = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
print(f'{year}年{month}月{day}日是{week_days[w]}')
elif mode == '3':
year = int(input('请输入年份:'))
print_year_calendar(year)
elif mode == '4':
year = int(input('请输入年份:'))
month = int(input('请输入月份:'))
print_month_calendar(year, month)
```
阅读全文
相关推荐









