Choose Event功能异常:Football全称无法识别,仅缩写F可用
赛事管理系统Choose Event功能故障排查与修复
故障原因
- 在
SportsEvents函数中,用户输入的赛事名称会被强制转为全大写,但events字典里的赛事全称是Football(首字母大写、其余小写),全大写的FOOTBALL不在字典的键列表中,因此触发"Invalid sports event name."错误。 - 输入缩写
F时,转为大写后正好匹配字典中的F键,所以流程能正常执行。
修复方案
快速修复:兼容全大写赛事名称
直接修改SportsEvents函数中Football的判断分支,加入对全大写FOOTBALL的匹配:
elif event_name == "F" or event_name == "FOOTBALL": team_name = input("Enter the name of the team: ") if team_name in TeamNames: events['Football']['participants'].append(team_name) else: print("Invalid team name.")
通用修复:统一大小写无关匹配逻辑
如果希望所有赛事都支持大小写自由输入,可重构SportsEvents的匹配逻辑,避免依赖固定大小写:
def SportsEvents(events, Teams, TeamNames, names): event_name = input("Enter the name of the sports event (e.g., Table Tennis, Football, 400m Race or TT/F/400R): ") event_input = event_name.lower() # 匹配对应的赛事键(忽略大小写) target_event = None for key in events: if key.lower() == event_input or key == event_input: target_event = key break if not target_event or events[target_event]['type'] != 'sports': print("Invalid sports event name.") return # 处理Table Tennis/TT if target_event in ["TT", "Table Tennis"]: participant_name = input("Enter participant name: ") if participant_name not in names: print("Participant not found. Please enter a valid name.") return team_name = input("Enter the name of the team (optional, press Enter to skip): ") if team_name and team_name in TeamNames: events['Table Tennis']['participants'].append(team_name) else: events['Table Tennis']['participants'].append(participant_name) # 处理Football/F elif target_event in ["F", "Football"]: team_name = input("Enter the name of the team: ") if team_name in TeamNames: events['Football']['participants'].append(team_name) else: print("Invalid team name.") # 处理400m Race/400R elif target_event in ["400R", "400m Race"]: participant_name = input("Enter participant name: ") if participant_name not in names: print("Participant not found. Please enter a valid name.") return team_name = input("Enter the name of the team (optional, press Enter to skip): ") if team_name and team_name in TeamNames: events['400m Race']['participants'].append(team_name) else: events['400m Race']['participants'].append(participant_name)
优化建议
- 新增赛事映射字典统一管理全称与缩写,比如
event_map = {'f': 'Football', 'football': 'Football', 'tt': 'Table Tennis', ...},后续维护更高效。 - 所有涉及赛事名称输入的函数(如
AcademicEvents)都采用大小写无关匹配,避免同类问题再次发生。
内容的提问来源于stack exchange,提问作者Ademide
相关产品推荐
相关产品推荐

