1)输入年份,判断是否为闰年; 2)输入年月日,判断该日为星期几; 3)输入年份,打出12个月的日历; 4)输入月份,打出该月的日历; 5)要求用多个函数实现。
时间: 2023-11-28 09:47:23 浏览: 77
好的,这是一个比较大的任务,我们来逐步完成它。
首先,我们需要对输入的年份进行判断,判断是否为闰年。判断闰年的方法是:四年一闰,百年不闰,四百年再闰。因此,我们可以写一个函数来判断:
```python
def is_leap_year(year):
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
return True
else:
return False
```
接下来,我们需要根据输入的年月日来计算出该日是星期几。这个问题可以使用蔡勒公式进行求解。蔡勒公式是这样的:
```python
W = (d + 2*m + 3*(m+1)//5 + y + y//4 - y//100 + y//400 + 1) % 7
```
其中,W 表示星期几,d 表示日期,m 表示月份(3表示三月,4表示四月,以此类推,1和2表示上一年的13月和14月),y 表示年份。我们可以写一个函数来计算 W:
```python
def get_weekday(year, month, day):
if month == 1 or month == 2:
month += 12
year -= 1
return (day + 2*month + 3*(month+1)//5 + year + year//4 - year//100 + year//400 + 1) % 7
```
现在我们来完成第三个任务,输入年份,打出12个月的日历。我们可以写一个函数,接收一个年份作为参数,然后循环输出每个月的日历。在输出日历之前,我们需要先计算出每个月的天数和第一天是星期几:
```python
def print_year_calendar(year):
for month in range(1, 13):
if month == 2:
if is_leap_year(year):
days = 29
else:
days = 28
elif month in [4, 6, 9, 11]:
days = 30
else:
days = 31
weekday = get_weekday(year, month, 1)
```
然后,我们可以使用循环输出每个月的日历。输出日历时,我们可以使用字符串格式化来美化输出:
```python
print("{:^20}".format(str(year)+"年"+str(month)+"月"))
print("{:^20}".format("日 一 二 三 四 五 六"))
for i in range(weekday):
print("{:^4}".format(""), end="")
for day in range(1, days+1):
print("{:^4}".format(str(day)), end="")
if (day + weekday) % 7 == 0:
print()
print("\n")
```
现在我们来完成第四个任务,输入月份,打出该月的日历。我们可以写一个函数,接收一个年份和一个月份作为参数,然后输出该月的日历。在输出日历之前,我们需要先计算出该月的天数和第一天是星期几:
```python
def print_month_calendar(year, month):
if month == 2:
if is_leap_year(year):
days = 29
else:
days = 28
elif month in [4, 6, 9, 11]:
days = 30
else:
days = 31
weekday = get_weekday(year, month, 1)
```
然后,我们可以使用循环输出该月的日历。和第三个任务类似,我们也可以使用字符串格式化来美化输出:
```python
print("{:^20}".format(str(year)+"年"+str(month)+"月"))
print("{:^20}".format("日 一 二 三 四 五 六"))
for i in range(weekday):
print("{:^4}".format(""), end="")
for day in range(1, days+1):
print("{:^4}".format(str(day)), end="")
if (day + weekday) % 7 == 0:
print()
print("\n")
```
最后,我们需要将上述代码整合成一个完整的程序。我们可以写一个主函数,接收用户的输入,并根据用户的选择调用相应的函数:
```python
def main():
while True:
print("请选择功能:")
print("1. 判断闰年")
print("2. 计算星期几")
print("3. 打印一年的日历")
print("4. 打印一个月的日历")
print("5. 退出程序")
choice = int(input())
if choice == 1:
year = int(input("请输入年份:"))
if is_leap_year(year):
print(year, "是闰年")
else:
print(year, "不是闰年")
elif choice == 2:
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))
weekday = get_weekday(year, month, day)
print(year, "年", month, "月", day, "日是星期", weekday)
elif choice == 3:
year = int(input("请输入年份:"))
print_year_calendar(year)
elif choice == 4:
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
print_month_calendar(year, month)
elif choice == 5:
break
else:
print("输入有误,请重新输入!")
```
现在,我们将所有代码整合起来,就得到了一个完整的程序:
阅读全文