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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 15:15:54