2018772155 发表于 2020-10-18 13:10:52

想写一个输入年月日计算星期几的代码,但是不知道文明结果不对,求大佬帮助

#规定月份的日期值
month1=31
month2=30
month3=28
month4=29
#规定年份的日期值
year1=365
year2=366
#判断每个月份腊月和非腊月
list1 =
list2 =
#用户输入
year = int(input("请输入一个年份:"))
month = int(input("请输入一个月份:"))
day = int(input("请输入一个日期:"))
#判断闰年并赋值
def daysyear(year):
    if year % 400 == 0 or (year%4 == 0 and year%100 != 0):
      return year2
    else:
      return year1
#判断月份并赋值
def daysmonth(month):
    if month in list1:
      return month1
    elif month in list2:
      return month2
    else:
      if year % 400 == 0 or (year%4 == 0 and year%100 != 0):
            return month4
      else:   
            return month3
#计算输入的日期到1990年的日期总和
#先计算年的日期
def sumyear(year):
    i = 0
    for i in range(1990,year):
      i += daysyear(i)
    return i
#计算月的日期总和
def summonth(month):
    j = 0
    for j in range(1,month):
      j += daysmonth(j)
    return j
#计算到1990年的日期总和
days = sumyear(year)+summonth(month)+day
if days%7==1:
    print("星期三")
elif days%7==2:
    print("星期四")
elif days%7==3:
    print("星期五")
elif days%7==4:
    print("星期六")
elif days%7==5:
    print("星期日")
elif days%7==6:
    print("星期一")
else:
    print("星期二")
print(days)
   

疾风怪盗 发表于 2020-10-18 13:21:15

测了几个都对的,代码太长了,没仔细看,先算闰年,再判断月份,再以一个固定日计算间隔日,除7算星期,思路应该没问题
datetime有这个可以返回星期几,可以搞个列表,上面代码封装个函数,两个都算下,循环验证下

import datetime
a = datetime.date(2020,10,18)
print(a.isoweekday())

聂嘉辉 发表于 2020-10-18 13:25:55

本帖最后由 聂嘉辉 于 2020-10-18 13:30 编辑

接楼上的思路,三行代码就可以判断。
import datetime
a = datetime.date(2020,10,18)
print(a.strftime('%A'))

kogawananari 发表于 2020-10-18 13:42:43

草 用标准库也太草了{:10_289:}

永恒的蓝色梦想 发表于 2020-10-18 15:17:04

百度蔡勒公式

2018772155 发表于 2020-10-18 22:49:36

疾风怪盗 发表于 2020-10-18 13:21
测了几个都对的,代码太长了,没仔细看,先算闰年,再判断月份,再以一个固定日计算间隔日,除7算星期,思 ...

新手小白刚接触。。。看不太懂

疾风怪盗 发表于 2020-10-18 23:20:37

2018772155 发表于 2020-10-18 22:49
新手小白刚接触。。。看不太懂

?看不懂?????

就是用datetime库啊
页: [1]
查看完整版本: 想写一个输入年月日计算星期几的代码,但是不知道文明结果不对,求大佬帮助