描述:
在X星系的广袤空间中漂浮着许多人造“炸弹”,用来作为宇宙中的路标,这些路标完成历史使命之后会自爆销毁。X星人可以为每个炸弹设定多少天之后爆炸。比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸。现在请你读入贝塔炸弹的放置日期和定时天数,计算并输出它爆炸的准确日期。
输入格式:
输入为两行:第一行是用逗号分割的年月日;第二行是一个表示定时天数的正整数。(题目已保证输入合法性,不必做输入合法性检查。)
输出格式:
输出为一行:用连字符分割的年月日,形如2015-01-16。
例如:
输入 | 结果 |
---|---|
2015,1,1 15 | 2015-01-16 |
2014,11,9 1000 | 2017-08-05 |
def add_date(date, n):
year = int(date.split('-')[0]) # 年
month = int(date.split('-')[1]) # 月
day = int(date.split('-')[2]) # 日
per_month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 12个月每月天数
for i in range(n):
if (year % 400) == 0 or (year % 4 == 0 and year % 100 != 0): # 四年一闰,百年不闰,四百年再闰
per_month_days[1] = 29 # 闰年2月改为29天
else:
per_month_days[1] = 28 # 非闰年改回28天
if day < per_month_days[month-1]:#如果日小于每月的天数,在循环里加一
day += 1
else:
day = 1 #如果等于或大于,月份加1,改为1号
if month < 12: #判断月份有没有超过12
month += 1
else:
month = 1
year += 1
return '%d-%02d-%02d' % (year, month, day) # 指定格式,月日都是两位,不够补0
s =input()
date = s.replace(',', '-')
n = int(input())
result_date = add_date(date, n)
print(result_date)
输入 | 期望的结果 | 得到的结果 | ||
---|---|---|---|---|
2015,1,1 15 | 2015-01-16 | 2015-01-16 | ||
2014,11,9 1000 | 2017-08-05 | 2017-08-05 |