【问题标题】:Continuous Key errors连续键错误
【发布时间】:2019-02-13 01:57:37
【问题描述】:

我的代码的重点是应该有一个 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',}

请帮忙

【问题讨论】:

  • 确切的错误是什么?并注意你的字典没有一个 0 键。
  • 您应该修复代码示例中的缩进。
  • 另请注意,使用this 比使用dict_day 更容易。
  • date[6:]?我们看不到date
  • 您的切片错误 - year 是 3 个字符,main_monthmain_day 各是一个字符。一旦你解决了这个问题,它仍然会经常失败,因为你的字典键不包含前九个值的前导零。

标签: python-3.x keyerror


【解决方案1】:

这么多错误...

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'

【讨论】:

    猜你喜欢
    • 2016-01-10
    • 2015-10-21
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多