如何用Python根据月日判断荷兰法定节假日?
荷兰法定节假日查询程序修正方案
原代码存在的核心问题
- 字典结构错误:同一月份的节日被重复键覆盖(比如4月的多个节日,最后仅保留
Kingsday),因为Python字典中相同键会被最后赋值的内容覆盖。 - 输入方式单一:仅支持分两行输入,未实现题目要求的同一行格式输入解析。
- 逻辑判断错误:直接将输入的月日与函数对象
holiday比较,未正确调用函数获取字典,也未检查月日是否存在于节假日数据中。 - 日期数据错误:圣诞节的月份被错误写为25、26,实际应为12月。
修正后的完整代码
# 定义荷兰固定日期法定节假日(修正后正确结构) holidays = { 1: {1: "New Year's Day"}, 4: {15: "Good Friday", 17: "Easter Sunday", 18: "Easter Monday", 27: "King's Day"}, 5: {5: "Liberation Day", 6: "White Sunday", 26: "Ascension Day"}, 6: {6: "White Monday"}, 12: {25: "Christmas Day", 26: "2nd Christmas Day"} } print("荷兰法定节假日查询工具") print("支持两种输入方式:") print("1. 分两行输入:先输月份,再输日期") print("2. 同一行输入示例:Month : 5 , Day : 21") # 处理输入逻辑 user_input = input("\n请输入日期信息:").strip() if "Month" in user_input or "," in user_input: # 解析同一行输入的格式 elements = [int(s) for s in user_input.split() if s.isdigit()] month, day = elements[0], elements[1] else: # 处理分两行输入的情况 month = int(user_input) day = int(input("请输入日期:").strip()) # 查询并输出结果 if month in holidays and day in holidays[month]: print(f"\n查询结果:该日期是「{holidays[month][day]}」") else: print("\n查询结果:该日期不属于固定法定节假日。")
代码改进说明
- 修复字典结构:每个月份对应一个包含该月所有节假日的子字典,彻底解决键覆盖问题。
- 双输入方式支持:通过判断输入内容特征,自动识别并解析两种输入格式,无需用户额外选择。
- 优化查询逻辑:先检查月份是否在节假日字典中,再验证日期是否属于该月的节假日,逻辑清晰准确。
- 修正数据错误:将圣诞节的月份修正为正确的12月,确保数据准确性。
内容的提问来源于stack exchange,提问作者Weiyii Jin
相关产品推荐
相关产品推荐

