
程序是,1900年的一月一号是星期一,求1900后任意年份的任意月份的一号是星期几,但是我运行出来的结果不太对,应该是5,请问我的程序哪里有问题?

该回答引用自GPT-3.5,由博主GISer Liu编写:
根据你的描述,你需要编写一个程序来确定任意年份的任意月份的第一天是星期几。问题可能出在你的程序逻辑上,所以下面我会提供一个修正后的解决方案。
解决思路:
def is_leap_year(year):
"""
判断是否为闰年
"""
return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
def days_in_month(month, year):
"""
计算特定月份的天数
"""
if month in {1, 3, 5, 7, 8, 10, 12}:
return 31
elif month == 2:
return 29 if is_leap_year(year) else 28
else:
return 30
def day_of_week(year, month, day):
"""
计算特定日期是星期几
"""
if month < 3:
month += 12
year -= 1
h = (day + (26 * (month + 1)) // 10 + year % 100 + (year % 100) // 4 + (year // 100) // 4 + 5 * (year // 100)) % 7
return (h + 5) % 7 + 1 # 返回星期几,1代表星期一,2代表星期二,以此类推
def main():
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = 1 # 我们只需要确定每个月的第一天是星期几,所以日期可以固定为1
weekday = day_of_week(year, month, day)
print(f"{year}年{month}月1日是星期{weekday}")
if __name__ == "__main__":
main()
这个程序中,is_leap_year函数用于判断是否为闰年,days_in_month函数用于计算特定月份的天数,day_of_week函数用于计算特定日期是星期几。在main函数中,用户输入年份和月份,然后程序输出该月第一天是星期几。如果该回答解决了您的问题,请采纳!如果没有,请参考以下方案进行修订
