from datetime import datetime, timedelta
class LoanClassifier:
def __init__(self, issue_date, recall_date, extension_date=None):
self.issue_date = datetime.strptime(issue_date, "%Y-%m-%d")
self.recall_date = datetime.strptime(recall_date, "%Y-%m-%d")
self.extension_date = (datetime.strptime(extension_date, "%Y-%m-%d")
if extension_date else None)
def is_leap_year(self, year):
return (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)
def calculate_loan_duration(self):
# 使用延长日(如果有)或收回日来计算贷款时长
end_date = self.extension_date if self.extension_date else self.recall_date
return (end_date - self.issue_date).days
def classify_loan(self):
# 如果贷款在当年发放并收回,则为短期
if self.issue_date.year == self.recall_date.year:
return "Short-term"
# 计算贷款时长
loan_duration = self.calculate_loan_duration()
# 检查是否跨越了闰年的2月
feb_check = any(
date.month == 2 and self.is_leap_year(date.year)
for date in [self.issue_date, self.recall_date, self.extension_date]
if date is not None
)
# 根据是否跨越闰年2月和贷款时长分类贷款
if feb_check:
threshold = 366
else:
threshold = 365
if loan_duration <= threshold:
return "Short-term"
else:
return "Medium- to Long-term"
# 示例数据
data = [
["2022-01-01", "2022-06-30", ""], # 当年收回,短期
["2022-01-01", "2023-02-01", "2022-12-31"], # 有延长日,但仍是短期(不跨越闰年2月)
["2020-02-28", "2020-12-31", ""], # 跨越闰年2月,但贷款时长小于366天,短期
["2020-02-01", "2021-02-01", ""], # 跨闰年,长期
["2023-01-01", "2024-01-02", "2023-12-31"], # 跨闰年,延长日也是长期
["2024-02-28", "2024-12-31", ""], # 闰年结束,贷款时长超过365天但小于366天,短期
["2024-01-01", "2024-01-30", ""], # 当年发放并收回,短期
]
# 处理数据并输出结果
for item in data:
classifier = LoanClassifier(item[0], item[1], item[2])
print(f"Loan Classification: {classifier.classify_loan()}")
这是我计算贷款期限的代码,我在自己电脑上的jupyter环境里可以运行,但是放到阿里云datawork里运行不了,请问为什么呢?该如何解决呢