Python日历项目求助:根据dd/mm/yyyy日期计算星期几失败
问题分析与修复方案
你的代码有两个关键问题导致无法正常运行:
calendar.weekday()参数顺序错误
这个函数的正确参数顺序是(年, 月, 日),但你传成了(日, 月, 年),这会直接触发参数越界的错误。年份提取错误
你用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
相关产品推荐
相关产品推荐

