鱼C论坛

 找回密码
 立即注册
楼主: 新手·ing

[技术交流] Python:每日一题 4

[复制链接]
发表于 2019-8-25 11:56:40 | 显示全部楼层
  1. def LearYear(year):
  2.           if (year%4==0 and year%100!=0) or year%400 == 0:
  3.                     return True
  4.           else:
  5.                     return False

  6. year=int(input('请输入年份:'))
  7. mouth = int(input('请月份:'))
  8. days = int(input('请输入日期:'))

  9. day_list0 =[31,29,31,30,31,30,31,31,30,31,30,31]
  10. day_list1 =[31,28,31,30,31,30,31,31,30,31,30,31]
  11. temp = 0

  12. if LearYear(year):
  13.           for i in range(mouth-1):
  14.                     temp += day_list0[i]
  15.           temp += days
  16. else:
  17.           for i in range(mouth-1):
  18.                     temp += day_list1[i]
  19.           temp += days
  20. print('这一天是这一年的第%d天' %temp)
  21.          
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-25 13:33:42 | 显示全部楼层
  1. import datetime as dt

  2. year,mouth,day =[int(x) for x in input('请输入年份 year/month/day:').split('/')]

  3. date1 = dt.datetime(year,mouth,day)
  4. date2 = dt.datetime(year-1,12,31)
  5. date3 = date1-date2
  6. print('这一天是这一年的第'+str(date3.days)+'天')

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-11-21 12:57:04 | 显示全部楼层

def CountDays():
    M = [1,2,3,4,5,6,7,8,9,10,11,12]
    DaysinM = [31,28,31,30,31,30,31,31,30,31,30,31]
    DaysinMleap = [31,29,31,30,31,30,31,31,30,31,30,31]
    YMD = input('please input Year-Month-Day like format 2019-11-22:')
    Year = int(YMD.split('-')[0])
    Month = int(YMD.split('-')[1])
    Day = int(YMD.split('-')[2])
    CountDays = 0
    if(Year%400 == 0):
        for i in range(Month-1):
            CountDays += DaysinMleap[i]
        CountDays += Day
    elif(Year%4 == 0):
        for i in range(Month-1):
            CountDays += DaysinMleap[i]
        CountDays += Day
    else:
        for i in range(Month-1):
            CountDays += DaysinM[i]
        CountDays += Day
    print('The day in the %d th of year.'%(CountDays))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-1 20:29:05 | 显示全部楼层
def years(a):
    year = a.split("年")
    month = year[1].split("月")
    day = month[1].split("日")
    months = [1, 3, 5, 7, 8, 10, 12]
    d = int(year[0])
    days = 0
    if d % 400 == 0 or (d % 4 == 0 and d % 100 != 0):
        f = 29
        days += f
    else:
        f = 28
        days += f
    if 0<int(month[0])<13 :
        if  0< int(day[0]) < 32:
            days +=  int(day[0])
            if int(month[0]) in months and int(month[0])>2:
                days += ((int(month[0])-1)/2)*31
                days += ((int(month[0]) - 1) / 2 -1) * 30
            else:
                days -= f
                days +=(int(month[0])-1)*31
            return days
        else:
            return "天数错误"
    else:
        return "月份错误"


a = input("请输入年月日;")
b = ["年","月","日"]
c =[i for i in b if i not in list(a)]
while c :
    a = input("请重新输入:")
    c =[]
e = years(a)
if type(e) == str :
    print(e)
else:
    print("这是这个月的第%s天"%int(e))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-6 19:42:39 From FishC Mobile | 显示全部楼层
# coding=gbk
year1=int(input("请输入年份:"))
month1=int(input("请输入月份:"))
day1=int(input("请输入日期:"))
list1=[0,31,59,90,120,151,181,212,243,273,304,334]
if(year1%4==0):
print("这是"+str(year1)+"年的第"+str(list1[month1-1]+1+day1)+"天")
else:
print("这是"+str(year1)+"年的第"+str(list1[month1-1]+day1)+"天")


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-6 19:51:16 From FishC Mobile | 显示全部楼层
前面的解答有误,重新发一个
# coding=gbk
year1=int(input("请输入年份:"))
month1=int(input("请输入月份:"))
day1=int(input("请输入日期:"))
list1=[0,31,59,90,120,151,181,212,243,273,304,334]
if(year1%4==0&year1%100!=0&month1>2):
print("这是"+str(year1)+"年的第"+str(list1[month1-1]+1+day1)+"天")
else:
print("这是"+str(year1)+"年的第"+str(list1[month1-1]+day1)+"天")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-6 19:58:05 From FishC Mobile | 显示全部楼层
上一条回复没有考虑世纪闰年再来一发
# coding=gbk
year1=int(input("请输入年份:"))
month1=int(input("请输入月份:"))
day1=int(input("请输入日期:"))
list1=[0,31,59,90,120,151,181,212,243,273,304,334]
if(year1%4==0 and year1%100!=0 and month1>2 or year1%400==0 and month1>2):
print("这是"+str(year1)+"年的第"+str(list1[month1-1]+1+day1)+"天")
else:
print("这是"+str(year1)+"年的第"+str(list1[month1-1]+day1)+"天")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-16 10:10:07 | 显示全部楼层
  1. year=int(input('year:'))
  2. month = int(input('month:'))
  3. day = int(input('day:'))
  4. if not year%400 or (not year%4 and year%100) :
  5.     year = 1
  6. else:
  7.     year = 0
  8. if month == 12 :
  9.     day += 30
  10.     month = 11
  11. if month == 11 :
  12.     day += 31
  13.     month = 10
  14. if month == 10 :
  15.     day += 30
  16.     month = 9
  17. if month == 9 :
  18.     day += 31
  19.     month = 8
  20. if month == 8 :
  21.     day += 31
  22.     month = 7
  23. if month == 7 :
  24.     day += 30
  25.     month = 6
  26. if month == 6 :
  27.     day += 31
  28.     month = 5
  29. if month == 5 :
  30.     day += 30
  31.     month = 4
  32. if month == 4 :
  33.     day += 31
  34.     month = 3
  35. if month == 3 :
  36.     day += 28+year
  37.     month = 2
  38. if month == 2 :
  39.     day += 31
  40.     month = 1
  41. if month == 1 :
  42.     print(day)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-16 18:00:45 | 显示全部楼层
year = int(input('请输入年份: '))
mouth = int(input('请输入月份: '))
day = int(input('请输入天数: '))

mouth_days = []
index = [1, 3, 5, 7, 8, 10, 12]
for i in range(12):
    i = i + 1
    if i in index:
        mouth_days.append(31)
    elif (i == 2) and (year % 400 == 0):
        mouth_days.append(29)
    elif (i == 2) and (year % 400 != 0):
        mouth_days.append(28)
    else:
        mouth_days.append(30)

sum_day = 0
for i in range(mouth - 1):
    sum_day += mouth_days[i]
sum_day += day

print('%d.%d.%d是这一年的第 %d 天' % (year, mouth, day, sum_day))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-14 17:01:37 | 显示全部楼层
def number4(year,month,day):
    a=[]
    numbermonth = [31,31,30,31,30,31,31,30,31,30,31]
    if (year%4==0) and (year%100 !=0) or (year%400==0):
        numbermonth.insert(1,29)
    else:
        numbermonth.insert(1,28)

    for i in range(month-1):
        a.append(numbermonth[i])
        
    sum1 = sum(a) + day

    return sum1
   
   
        
   
year=int(input("请输入年份:"))

month = int(input("请输入月份:"))

day = int(input("请输入天:"))

print("这是这一年的第{}天".format(number4(year,month,day)))

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-24 23:13:41 | 显示全部楼层
number=[0,31,28,31,30,31,30,31,31,30,31,30,31]
temp=input('请输入日期(格式如:2000.02.08):')
temp=list(temp)
temp.reverse()
year=''
month=''
day=''
while temp[-1]!='.':
    year+=str(temp.pop())
temp.pop()
while temp[-1]!='.':
    month+=str(temp.pop())
temp.pop()
month=int(month)
print(month)
while temp:
    day+=str(temp.pop())
year=int(year)
month=int(month)
day=int(day)
if (year%100==0)and(year%100==0):
    flag=1
elif (year%4==0)and(year%100!=0):
    flag=1
else :
    flag=0
i=range(month)
if month<=2:
    num=0
    for each in i:
        num+=number[each]
    num+=day
elif (2<month<=12):
    num=flag
    for each in i:
        num+=number[each]
    num+=day
print("%d月%d日是%d年的第%d天"%(month,day,year,num))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-29 16:06:24 | 显示全部楼层
其实应该把输入合法性先做验证,本来应该把这个模块做个函数独立出来,懒了。。。


  1. def feb_switch(x):
  2.     if x%4 == 0 :
  3.         return 1
  4.     else:
  5.         return 0
  6.    
  7. while 1:

  8.     date = input('Please input date in format YYYY.month.day\n')
  9.     x = date.split('.',3)
  10.     day = 0
  11.     big = [1, 3, 5, 7, 8, 10, 12]
  12.     feb = [28,29]

  13.     if feb_switch(int(x[0])) == 0 and int(x[1]) ==2 and int(x[2]) >28:
  14.         print("不是闰年,输入错误!!!")
  15.     elif feb_switch(int(x[0])) == 1 and int(x[1]) ==2 and int(x[2]) >29:
  16.         print("二月份哪有那么多天!!!")
  17.     elif int(x[1]) not in big and int(x[2]) >30:
  18.         print("当前月份只有30天!!!")
  19.     elif int(x[1]) in big and int(x[2]) >31:
  20.         print("当前月份只有31天!!!")
  21.     else:
  22.         for i in range(int(x[1]) - 1):
  23.             if i + 1 in big:
  24.                 day += 31
  25.             elif i + 1 == 2:
  26.                     day += feb[feb_switch(int(x[0]))]
  27.             else:
  28.                 day += 30

  29.         day += int(x[2])
  30.         print(day)

复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 19:40:02 | 显示全部楼层
  1. import datetime
  2. time=input('yyyy,mm,dd')
  3. a=time.split(',')
  4. day1=datetime.datetime(int(a[0]),int(a[1]),int(a[2]))
  5. day2=datetime.datetime(int(a[0]),1,1)
  6. delayday=(day1-day2).days+1
  7. print('这是一年中的第%d天'%delayday)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 10:53:43 | 显示全部楼层

num = 0
while num < 3 :
    DataTest = eval(input("输入某年:"))
    DataTest01 = eval(input("输入某月:"))
    DataTest02 = eval(input("输入某日:"))
    for i in range(1,13):
        if  DataTest01 in [i] :
            if i == 1 :
                DataNo = DataTest02
               # print("这一天是这一年的第%d" % DataTest)
            elif i== 2 :
                DataNo = DataTest02 + 31
                # print("这一天是这一年的第%d" % DataNo)
            elif i == 3 :
                DataNo = DataTest02+59
                # print("这一天是这一年的第%d" % DataNo)
            elif i == 4 :
                DataNo = DataTest02 + 91
                # print("这一天是这一年的第%d" % DataNo)
            elif i == 5 :
                DataNo = DataTest02 + 121
                # print("这一天是这一年的第%d" % DataNo)
            elif i == 6 :
                DataNo = DataTest02 + 152
                # print("这一天是这一年的第%d" % DataNo)
            elif i == 7 :
                DataNo = DataTest02 + 183
                # print("这一天是这一年的第%d" % DataNo)
            elif i == 8 :
                DataNo = DataTest02 + 214
                # print("这一天是这一年的第%d" % DataNo)
            elif i == 9 :
                DataNo = DataTest02 + 244
                # print("这一天是这一年的第%d" % DataNo)
            elif i == 10 :
                DataNo = DataTest02 + 275
                # print("这一天是这一年的第%d" % DataNo)
            elif i == 11 :
                DataNo = DataTest02 + 305
                # print("这一天是这一年的第%d" % DataNo)
            elif i == 12 :
                DataNo = DataTest02 + 335
                # print("这一天是这一年的第%d" % DataNo)
    if DataTest % 4 == 0 or DataTest % 400 == 0:
        print("这一天是这一年的第%d" % (DataNo+1))
    else:print("这一天是这一年的第%d" % DataNo)
    num = num + 1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 10:53:43 | 显示全部楼层
  1. year = int(input('year:'))
  2. month = int(input('month:'))
  3. day = int(input('day:'))
  4. month_day = [31,28,31,30,31,30,31,31,30,31,30,31]
  5. days = 0
  6. for i in range(month-1):
  7.     days += month_day[i]
  8. if year % 4 == 0 and month > 2:
  9.     print(year,'年',month,'月',day,'日是这一年的第',days + day +1 ,'天')
  10. else:
  11.     print(year,'年',month,'月',day,'日是这一年的第',days + day,'天')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 13:55:59 | 显示全部楼层
return True if (n % 4 == 0 and n % 100 != 0) or n % 400 == 0 else False

这句为什么不是直接return Ture if (n%4==0)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-27 10:34:37 | 显示全部楼层
  1. s=[]
  2. year=int(input("请输入年:"))
  3. month=int(input("请输入月:"))
  4. day1=int(input("请输入日:"))
  5. day=[31,28,31,30,31,30,31,31,30,31,30,31]
  6. if year%400==0 or (year%4==0 and year%100!=0):
  7.     day[1]=29
  8. for i in range(month-1):
  9.     s.append(day[i])
  10. print(int(sum(s))+day1)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-22 17:51:52 | 显示全部楼层
  1. datetime = input('输入某年某月某日(例:20140228):')
  2. year = int(datetime[:4])
  3. month = int(datetime[4:6])
  4. day = int(datetime[6:])
  5. a = [1, 3, 5, 7, 8, 10, 12]
  6. b = [4, 6, 9, 11]
  7. count1, count2 = 0, 0
  8. day2, day3 = 0, 0
  9. if month < 10:
  10.     month = '%02d' % month
  11. else:
  12.     month = '%d' % month
  13. for i in range(int(month)):
  14.     if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
  15.         if i == 2:
  16.             day2 = 29
  17.     else:
  18.         if i == 2:
  19.             day2 = 28
  20.     if i in a:
  21.         count1 += 1
  22.     elif i in b:
  23.         count2 += 1
  24. day3 = count1 * 31 + count2 * 30
  25. print('这一天是这一年的第%d天' % (day + day2 + day3))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-28 14:54:22 | 显示全部楼层

#定义变量year:接受输入的年份
year = int(input("请输入年份:"))
#定义变量month:接收输入的月份
month = int(input("请输入月份:"))
#定义天数的list
listDay = [31,28,31,30,31,30,31,31,30,31,30,31]
#定义变量day:接收输入的日期
day = int(input("请输入日期:"))
#定义theDay来存放是这一年的第几天
theDay = 0
if  month == 2:
    theDay = 31 + day
    print("%d年%d月%d日是这一年的第%d天"%(year,month,day,theDay))
elif month == 1:
    theDay = day
    print("%d年%d月%d日是这一年的第%d天"%(year,month,day,theDay))
elif month>2:
    if year%4 == 0 and year%100 != 0 or year%400 == 0:
        for i in range(1,month):
            theDay += listDay[i-1]
        print("%d年%d月%d日是这一年的第%d天"%(year,month,day,theDay+1+day))
    else:
        for i in range(1,month):
            theDay += listDay[i-1]
        print("%d年%d月%d日是这一年的第%d天" % (year, month, day, theDay + day))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-20 11:21:46 | 显示全部楼层
本帖最后由 鲨鱼辣椒1 于 2020-7-20 16:25 编辑

list1 = [31,29,31,30,31,30,31,30,31,30,31,30]
list2 = [31,28,31,30,31,30,31,30,31,30,31,30]
month = 0


def judge_date():
    a = eval(input("请输入年份:"))

    if ((a % 4 == 0) and (a % 100 != 0)) or ((a % 400 == 0) and (a % 100 == 0)):   # 如果是闰年         
        count_date(list1)
    else:
        count_date(list2)

def count_date(t):                                   
    b = eval(input("请输入月份:"))
    for i in range(b - 1):
        global month                                 
        month = month + t[i]         
    c = eval(input("请输入日期:"))
    result = month + c
    print(result)
   

judge_date()
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-27 20:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表