<p>既然我是来学习的,我想试试这个。这段代码仍然需要一些工作,但我认为这是一个良好的开端。如果你抛弃它,我的感情不会受到伤害。如果您想使用,我们可以根据需要添加功能</p>
<pre><code>import datetime as dt
from dateutil.relativedelta import relativedelta as rdelta
class Sentence:
release_date = None
def __init__(self, year=1970, month=1, day=1):
"""Create a new instance with the date of the arrest,
default is set to the unix epoch...hehehe"""
self.year = year
self.month = month
self.day = day
self.base_date = dt.date(self.year, self.month, self.day)
self.arrest_date = dt.date(self.year, self.month, self.day)
def basedate(self):
"""Returns the basedate/arrest date"""
return self.arrest_date
def penalty(self, years=0, months=0, days=0):
"""Each time the penalty method is call it accumulates
the length of the sentence. Returns release date."""
self.years = years
self.months = months
self.days = days
if Sentence.release_date is None:
Sentence.release_date = (self.base_date +
rdelta(years=self.years,
months=self.months,
days=self.days))
else:
Sentence.release_date = (Sentence.release_date +
rdelta(years=self.years,
months=self.months,
days=self.days))
return Sentence.release_date - rdelta(days=1)
def remaining(self):
"""Returns a tuple of years, months, days remaining of the
sentence"""
self.y_remaining = rdelta(Sentence.release_date, dt.date.today()).years
self.m_remaining = rdelta(Sentence.release_date,
dt.date.today()).months
self.d_remaining = rdelta(Sentence.release_date, dt.date.today()).days
return self.y_remaining, self.m_remaining, self.d_remaining
s1 = Sentence(2014, 11, 12)
print(f'Arreset Date: {"":>31}{s1.basedate()}')
print(f'Release Date after 1st sentence: {"":>12}{s1.penalty(7, 4, 0)}')
print(f'Release Date after 2nd sentence: {"":>12}{s1.penalty(4, 10, 20)}')
# print(f'Release Date after 2nd sentence: {"":>12}{s1.penalty(1, 2, 5)}')
print(f'Time remaining on sentence as of {dt.date.today()}: '
f'{s1.remaining()[0]} years, {s1.remaining()[1]} months, '
f'{s1.remaining()[2]} days')
# Output
# Arreset Date: 2014-11-12
# Release Date after 1st sentence: 2022-03-11
# Release Date after 2nd sentence: 2027-01-31
# Time remaining on sentence as of 2020-04-24: 6 years, 9 months, 8 days
</code></pre>