用户输入年、月,按示例格式显示该月的月历。已知1800年1月1日星期三。根据已给出的部分代码,完成该问题的代码实现。 【输入形式】分两行分别输入年、月 【输出形式】按格式输出该年该月的月历 【样例输入1】 2004 2 【样例输出1】
时间: 2023-07-14 17:14:17 浏览: 103
输入年月日,并打印出该月的日历,并显出星期,在日历上标出该日
4星 · 用户满意度95%
以下是实现该问题的Python代码:
```python
year = int(input())
month = int(input())
# 计算该月第一天是星期几
days = 0
for y in range(1800, year):
if (y % 4 == 0 and y % 100 != 0) or y % 400 == 0:
days += 366
else:
days += 365
for m in range(1, month):
if m in [1, 3, 5, 7, 8, 10, 12]:
days += 31
elif m in [4, 6, 9, 11]:
days += 30
elif (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
days += 29
else:
days += 28
first_day = (days + 2) % 7
# 输出月历
print(" Su Mo Tu We Th Fr Sa")
print("--------------------")
for i in range(first_day):
print(" ", end="")
for day in range(1, 29 if month == 2 else 31):
print(" {:2d}".format(day), end="")
if (first_day + day - 1) % 7 == 6:
print()
print()
```
代码思路如下:
首先,输入年、月,然后根据已知的1800年1月1日星期三,计算出该月第一天是星期几。具体方法是先计算输入年份之前的所有天数,再加上该月之前的天数,最后加上2(因为1800年1月1日是星期三)并对7取余,即可得到该月第一天是星期几。
然后,根据该月第一天是星期几,输出月历。首先输出星期标头,然后输出第一行的日期,如果第一天不是星期天,则前面输出若干个空格;接着输出第二行至最后一行的日期,每输出一个日期后判断是否需要换行。注意,2月份的天数需要根据是否是闰年来判断,此处使用了简单的判断方法(能被4整除但不能被100整除或者能被400整除的年份是闰年)。
阅读全文