如何提取datetime对象中的月份并匹配字典对应键获取值?
解决方案
核心就是从已有的birthdate datetime对象中提取月份英文全称(和你字典的键完全匹配),直接用这个字符串作为键去字典里取值即可。
完整修改代码
from datetime import datetime # 原代码缺少这个关键导入,必须加上 # 接收生日输入 birthday = input("请输入你的生日,格式为:dd/mm/yyyy。") birthdate = datetime.strptime(birthday, "%d/%m/%Y") birthdate_display = birthdate.strftime("%d %B") print(f"你的生日是:{birthdate_display}") # 名人出生月字典 famousBirthdays = { "January": "莫扎特", "February": "查尔斯·达尔文", "March": "阿尔伯特·爱因斯坦", "April": "伊丽莎白二世", "May": "林奈", "June": "约瑟芬·贝克", "July": "弗里达·卡罗", "August": "巴拉克·奥巴马", "September": "伊丽莎白一世", "October": "甘地", "November": "玛丽·居里", "December": "艾米莉·狄金森" } # 匹配对应名人 month_name = birthdate.strftime("%B") famous_person = famousBirthdays[month_name] print(f"和你同月出生的名人是:{famous_person}")
关键细节说明
- 导入模块:原代码没写
from datetime import datetime,运行会报错,必须加上才能使用datetime的解析和格式化方法。 - 提取月份全称:
strftime("%B")会返回月份的英文全称(如May、January),刚好和你字典的键完全一致,直接用这个字符串作为索引就能拿到对应名人。 - 可选:异常处理:如果要防止用户输入错误格式,可以加个异常捕获:
try: birthdate = datetime.strptime(birthday, "%d/%m/%Y") # 后续逻辑 except ValueError: print("格式错误!请严格按照dd/mm/yyyy输入。")
内容的提问来源于stack exchange,提问作者Phillip Handfield
相关产品推荐
相关产品推荐

