求助:如何修改Python程序实现自定义日期的星期查询并解决AttributeError错误?
解决自定义日期查询星期的问题
嘿,这个问题我之前也碰到过,咱们一步步来搞定它!
为什么会报错?
你遇到的AttributeError: 'str' object has no attribute 'weekday'错误,根源很简单:
input()函数返回的是字符串类型的数据,而weekday()是datetime.date对象独有的方法,字符串当然没有这个属性啦。- 你之前的代码里,
date.today()返回的是现成的date对象,所以能直接调用weekday(),但换成用户输入的字符串就不行了。
解决方案:把字符串转成date对象
我们需要先把用户输入的日期字符串转换成date对象,之后就能正常调用方法了。这里分两种常见场景:
场景1:用户输入ISO标准格式(YYYY-MM-DD)
如果用户按年-月-日的格式输入,用date.fromisoformat()最方便,代码如下:
from datetime import date import calendar # 提示用户输入日期 date_input = input("请输入日期(格式:YYYY-MM-DD):") try: # 将字符串转换为date对象 target_date = date.fromisoformat(date_input) # 输出对应的星期名称 print(f"这个日期是:{calendar.day_name[target_date.weekday()]}") except ValueError: # 处理格式错误或无效日期的情况 print("哎呀,输入的日期格式不对或者日期无效,请按照YYYY-MM-DD的格式重新输入哦!")
场景2:用户输入其他格式(比如DD/MM/YYYY)
如果用户习惯用日/月/年或者其他格式,就需要用datetime.strptime()来指定解析规则,代码示例:
from datetime import datetime import calendar date_input = input("请输入日期(格式:DD/MM/YYYY):") try: # 按照指定格式解析字符串,再转成date对象 target_date = datetime.strptime(date_input, "%d/%m/%Y").date() print(f"这个日期是:{calendar.day_name[target_date.weekday()]}") except ValueError: print("输入格式不正确,请按照DD/MM/YYYY的格式输入,比如:01/01/2024")
小提示:格式符说明
用strptime的时候,这些格式符要对应好:
%Y:4位数字的年份(比如2024)%m:两位数字的月份(比如01代表1月)%d:两位数字的日期(比如05代表5号)- 如果是
MM/DD/YYYY格式,就把格式字符串改成"%m/%d/%Y"就行。
内容的提问来源于stack exchange,提问作者Lars van Mil
相关产品推荐
相关产品推荐

