#41593: python不導入datetime的話,是否注定LTE?


sam851015@gmail.com (多挖鼻孔有益身心健康)

學校 : 不指定學校
編號 : 277705
來源 : [123.192.228.253]
最後登入時間 :
2024-11-09 20:16:56
a263. 日期差幾天 -- 板橋高中練習題 | From: [123.192.228.253] | 發表日期 : 2024-08-09 00:58

如題,寫了一堆東西,在IDE中測試都能得出正確結果,但就是會LTE
 
有沒有辦法再繼續優化這個過程,讓它更有效率?
還是說我不該糾結在這,直接用大佬們準備好的datetime就好
 
github連結
 
def leepYearCheck(year):
"""
檢查是否是閏年
:param year: 年分(西元年)interger
:return: 閏年=True, 平年=False
"""
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:return True
else:return False

def monthDaysCheck(year, month):
"""
檢查月份的總天數
:param year: 哪一年的月份, 用於判斷平年或閏年 interger
:param month: 月份 interger
:return: 當月天數 interger
"""
return [31, 28 + int(leepYearCheck(year)), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month-1]

def monthDayTotal(year, month, day):
"""
統計從該年的1月1日起至指定的日期,一共有幾天
:param year: 年分(西元年) interger
:param month: 月份 interger
:param day: 日期 interger
:return: 總天數
"""
_days = 0
for m in range(month):
if m == 0:continue
else:_days += monthDaysCheck(year, m)
return _days + day

def diffYearDays(ya, ma, da, yb, mb, db):
"""
統計天數差距
其中 ya < yb
:param ya: 年份1 interger
:param ma: 月份1 interger
:param da: 日期1 interger
:param yb: 年份2 interger
:param mb: 月份2 interger
:param db: 日期2 interger
:return: 天數差距 interger
"""
_daysA = monthDayTotal(ya, ma, da)
_daysB = 0
while ya < yb:
_daysB += 366 if leepYearCheck(ya) else 365
ya += 1
return _daysB - _daysA + monthDayTotal(yb, mb, db)

while True:
try:
y1 ,m1, d1 = map(int, input().split())
y2 ,m2, d2 = map(int, input().split())

if y1 == y2:
if m1 == m2: print(abs(d2 - d1))
else: print(abs(monthDayTotal(y1 ,m1, d1) - monthDayTotal(y2 ,m2, d2)))
else:
if y1 < y2:print(diffYearDays(y1 ,m1, d1, y2 ,m2, d2))
else:print(diffYearDays(y2 ,m2, d2, y1 ,m1, d1))
except EOFError:break
 
 
 
#41595: Re: python不導入datetime的話,是否注定LTE?


asnewchien@gmail.com (david)

學校 : 不指定學校
編號 : 68108
來源 : [122.117.95.179]
最後登入時間 :
2024-11-04 20:21:51
a263. 日期差幾天 -- 板橋高中練習題 | From: [122.117.95.179] | 發表日期 : 2024-08-09 10:19

我沒有引用 datetime

 
ZeroJudge Forum