连续密钥错误

问题描述 投票:2回答:2

我的代码的重点是应该输入yyyymmdd并且答案是作为字符串出现,例如如果输入是“20191129”那么输出将是“2019年11月29日”

我不断在我的代码中得到随机的“关键错误'0'”,我不明白为什么会这样我的代码:

def format_date(date):
year = date[:3]
main_month = date[4:5]
main_day = date[6:]

if main_month <= '01' and main_month >= '12':
    return dic_month[main_month]

if main_day <= '01' and main_day >= '31':
    return dic_day[main_day]

month = dic_month[main_month]
day = dic_day[main_day]

return month + ' ' + day + ' ' + year

以下是我目前使用的词典:

dic_month = {'1': 'January', '2': 'February', '3': 'March', '4': 'April', '5': 'May', 
         '6': 'June', '7': 'July', '8': 'August', '9': 'September', '10': 'October',
         '11': 'November', '12': 'December'}

dic_day = {'1': '1st', '2': '2nd', '3': '3rd', '4': '4th', '5': '5th', '6': '6th', '7': '7th',
           '8': '8th', '9': '9th', '10': '10th', '11': '11th', '12': '12th', '13': '13th', '14': '14th',
           '15': '15th', '16': '16th', '17': '17th', '18': '18th', '19': '19th', '20': '20th', '21': '21st',
           '22': '22nd', '23': '23rd', '24': '24th', '25': '25th', '26': '26th', '27': '27th', '28': '28th',
           '29': '29th', '30': '30th', '31': '31st',}

请帮忙

python-3.x keyerror
2个回答
0
投票

"key error '0'"意味着您正在尝试使用密钥'0'访问dict条目,但dict中不存在此类条目。


0
投票

这么多错误......

dic_month = {'1': 'January', '2': 'February', '3': 'March', '4': 'April', '5': 'May', 
         '6': 'June', '7': 'July', '8': 'August', '9': 'September', '10': 'October',
         '11': 'November', '12': 'December'}

dic_day = {'1': '1st', '2': '2nd', '3': '3rd', '4': '4th', '5': '5th', '6': '6th', '7': '7th',
           '8': '8th', '9': '9th', '10': '10th', '11': '11th', '12': '12th', '13': '13th', '14': '14th',
           '15': '15th', '16': '16th', '17': '17th', '18': '18th', '19': '19th', '20': '20th', '21': '21st',
           '22': '22nd', '23': '23rd', '24': '24th', '25': '25th', '26': '26th', '27': '27th', '28': '28th',
           '29': '29th', '30': '30th', '31': '31st',}

def format_date(date):
    year = date[:4]
    main_month = date[4:6]
    main_day = date[6:]

    if int(main_month) < 1 or int(main_month) > 12:
        return 'Wrong month'

    if int(main_day) < 1 or int(main_day) > 31:
        return 'Wrong day'

    month = dic_month[main_month]
    day = dic_day[main_day]

    return month + ' ' + day + ' ' + year


print(format_date('20190029')) # 'Wrong month'
print(format_date('20191129')) # 'November 29th 2019'
© www.soinside.com 2019 - 2024. All rights reserved.