HJ73-日期转换成天数-遇到的一些小bug和自带函数记录

˚∆˚DEBUG明明同样的数据自测是正确的,但是提交却不输出,原因:
测试用例有多组,注意循环输入
while True:
try:

except:
break

˚∆˚DEBUG保存并调试如果遇到问题(比如不输出)有可能是因为代码有bug,比如读入不对,或者变量没有定义,list没有定义大小,或者tab没有正确等

˚∆˚DEBUG最开始一直自测不正确,原因:计算year是否为闰年,应该取余%,我用的全是//,一直没有觉察到,知道我在terminal测试了一下if语句,才发现这个bug

˚∆˚闰年:(1) %4==0 and % 100 != 0 (2) %400 == 0

˚∆˚自带日期转换函数:
import datatime
datetime.datetime(*map(int, input().split())).strftime("%j").lstrip("0")

while True:
    try:
        year, month, day = map(int, input().split())
        ans = 0
        if ((year%4 == 0 and year%100 != 0) or (year%400==0)):
            month_list = [31, 29, 31, 30, 31, 30,31,31,30,31,30,31]
        elif ((year %400 != 0 and year %100 ==0) or (year%4 != 0)):
            month_list[1] = 28                                    #不需要重新赋值,只修改一下就可
        ans += day
        for i in range(month-1):
            ans += month_list[i]
        print(ans)
    except:
        break
while True:
    try:
        year, month, day = map(int, input().split())
        m = 1
        ans = 0
        while m < month:
            if m in [1, 3, 5, 7, 8, 10, 12]:
                ans += 31
            elif m in [4, 6, 9, 11]:
                ans += 30
            elif m == 2 and ((year%4 == 0 and year%100 != 0) or (year%400==0)):
                ans += 29
            elif m == 2 and ((year %400 != 0 and year %100 ==0) or (year%4 != 0)):
                ans += 28
            m+=1
        #终止条件是m=month
        ans += day
        print(ans)
    except:
        break

全部评论
多条debug经历+经验,都是我曾经在笔试的时候遇到过的T-T,因为这种小bug挂笔试太难受了
点赞 回复 分享
发布于 2020-09-12 12:11

相关推荐

点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

更多
牛客网
牛客企业服务