You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python根据月日判断荷兰法定节假日?

荷兰法定节假日查询程序修正方案

原代码存在的核心问题

  1. 字典结构错误:同一月份的节日被重复键覆盖(比如4月的多个节日,最后仅保留Kingsday),因为Python字典中相同键会被最后赋值的内容覆盖。
  2. 输入方式单一:仅支持分两行输入,未实现题目要求的同一行格式输入解析。
  3. 逻辑判断错误:直接将输入的月日与函数对象holiday比较,未正确调用函数获取字典,也未检查月日是否存在于节假日数据中。
  4. 日期数据错误:圣诞节的月份被错误写为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:46:01