<p>检查下面的代码,它首先计算天数,然后减去每个福利的天数,并打印下一个福利可用日期的日期</p>
要考虑每个月的闰年和天数,最好计算总天数并建立它的逻辑。<p>
<p>输出将打印每个福利的详细信息,并最终显示在一起的总天数</p>
<pre><code>import datetime
from dateutil.relativedelta import relativedelta
data_base = datetime.date(day=12, month=11, year=2014)
pena1_years, pena1_months, pena1_days = 7, 4, 0
pena2_years, pena2_months, pena2_days = 4, 10, 20
total_days_spent = 0
def calculadora():
# Calculate the end date and total number of days for the first crime
pena1_end_date = data_base + relativedelta(years=+pena1_years, months=+pena1_months, days=+pena1_days)
pena1_reamining_days = (pena1_end_date - data_base).days
# Calculate the end date and total number of days for the second crime
pena2_end_date = data_base + relativedelta(years=+pena2_years, months=+pena2_months, days=+pena2_days)
pena2_reamining_days = (pena2_end_date - data_base).days
benefit_count=1
while pena1_reamining_days > 0 or pena2_reamining_days > 0:
#count the minumum number of days for both the crimes
pena1_minimum_days = round(pena1_reamining_days / 5 * 2)
if pena1_minimum_days == 0 and pena1_reamining_days > 0:
pena1_minimum_days = pena1_reamining_days
pena1_reamining_days -= pena1_minimum_days
print(f"Minimum no of days to spent in the first crime for the {benefit_count} benefit is {pena1_minimum_days} ")
pena2_minimum_days = round(pena2_reamining_days / 6)
if pena2_minimum_days == 0 and pena2_reamining_days > 0:
pena2_minimum_days = pena2_reamining_days
pena2_reamining_days -= pena2_minimum_days
print(f"Minimum no of days to spent in the second crime for the {benefit_count} benefit is {pena2_minimum_days} ")
total = pena1_minimum_days + pena2_minimum_days
global total_days_spent
total_days_spent += total
print(f"Total no of days to spent for the {benefit_count} benefit {total} ")
date_next_benefit = data_base + relativedelta(days=+total)
print(f"{benefit_count} benefit day to avail after {date_next_benefit}")
benefit_count+=1
calculadora()
print(f"Total number of days spent for both the crime is {total_days_spent}")
</code></pre>