[Python] 星系炸弹

该文章描述了一个编程问题,涉及在X星系中使用人造炸弹作为宇宙路标的场景。给定放置日期和定时天数,程序需计算并输出炸弹爆炸的确切日期。提供的Python代码实现了这一功能,考虑了闰年的条件,并对日期进行了适当增加。
摘要由CSDN通过智能技术生成

描述:

在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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值