编写函数,如果公元1800年1月1日是星期三,输入任意一日期(年月日),返回该日是星期几?(提示:要先统计出输入的日期距离1800年1月1日的总天数,再对7求余)
时间: 2023-05-12 20:02:41 浏览: 223
以下是函数的代码:
```python
def get_weekday(year, month, day):
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
days += day - 1
return ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"][days % 7]
```
你可以将年、月、日作为参数传入该函数,它将返回该日期是星期几。
相关问题
编写函数,接收任一日期date(日期格式为8位数字,前4位为年,随后两位为月,最后两位为日),如果公元1800年1月1日是星期三,输入任意一日期(年月日),返回该日是星期几?(提示:要先统计出输入的日期距离1800年1月1日的总天数,再对7求余)
以下是一个可能的函数实现:
```python
def get_weekday(date):
year, month, day = int(date[:4]), int(date[4:6]), int(date[6:])
days_since_1800_01_01 = (year - 1800) * 365 + (year - 1801) // 4 - (year - 1701) // 100 + (year - 1601) // 400
days_in_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if year % 4 == 0 and (year % 100 != 0 or year % 400 == 0):
days_in_month[2] = 29
days_since_1800_01_01 += sum(days_in_month[:month]) + day - 1
weekday = (days_since_1800_01_01 + 3) % 7
return weekday
```
这个函数首先将输入的日期解析为年、月、日三个整数。然后,它计算出输入日期距离1800年1月1日的总天数,这个计算过程参考了维基百科上的[公元年份到天数的转换公式](https://zh.wikipedia.org/wiki/%E5%85%AC%E5%85%83%E5%B9%B4#%E5%85%AC%E5%85%83%E5%B9%B4%E4%B8%8E%E5%A4%A9%E6%95%B0%E7%9A%84%E8%BD%AC%E6%8D%A2)。最后,它将总天数加上1800年1月1日是星期三这个偏移量,再对7求余,就得到了输入日期是星期几。
编写python函数如果公元1800年为一月一号为星期三,那么任意一个日期的年月日输出这天是星期几
可以使用datetime模块中的weekday()方法来实现。
代码如下:
```python
import datetime
def get_weekday(year, month, day):
# 获取这一天的日期对象
date = datetime.date(year, month, day)
# 返回星期几(0表示星期一,6表示星期日)
return date.weekday() + 1 if date.weekday() != 6 else 0
```
函数接收三个参数:年、月、日。返回值为一个整数,表示这一天是星期几。其中,weekday()方法返回的是一个整数,表示星期几,0表示星期一,6表示星期日。因此,需要将这个值加1,并对7取余(如果是星期日,则返回0)。
阅读全文