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

Python日历项目求助:根据dd/mm/yyyy日期计算星期几失败

问题分析与修复方案

你的代码有两个关键问题导致无法正常运行:

  1. calendar.weekday() 参数顺序错误
    这个函数的正确参数顺序是(年, 月, 日),但你传成了(日, 月, 年),这会直接触发参数越界的错误。

  2. 年份提取错误
    你用date[6:9]提取年份,只能拿到3位数字(比如输入01/01/2024的话,会得到202),正确的写法应该是date[6:]或者date[6:10],这样才能获取完整的4位年份。

修复后的代码

import calendar

date = input("Enter a date (dd/mm/yyyy): ")
dd = int(date[:2])
mm = int(date[3:5])
yyyy = int(date[6:])

# 获取星期索引(0=周一,6=周日)
weekday_index = calendar.weekday(yyyy, mm, dd)
# 把索引转成中文星期名称
weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
print(f"该日期是{weekdays[weekday_index]}")

额外优化建议

  • 可以加入输入格式校验,比如检查输入是否包含两个斜杠、日期和月份是否在合法范围,避免用户输入错误格式导致程序崩溃。
  • 如果想用datetime模块实现,代码会更简洁:
from datetime import datetime

date_str = input("Enter a date (dd/mm/yyyy): ")
date_obj = datetime.strptime(date_str, "%d/%m/%Y")
weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
print(f"该日期是{weekdays[date_obj.weekday()]}")

strptime会自动处理格式校验,格式不匹配时会抛出异常,你可以用try-except块捕获并提示用户输入正确格式。

内容的提问来源于stack exchange,提问作者Izzy E

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 09:06:18