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

如何根据用户输入执行对应Python赛事函数?是否用IF语句更合适?

问题解决方法

首先,你的核心需求是根据初始输入的"Teams"或"Individuals",对应运行tevent1()或ievent1(),下面提供两种实现方式:

一、基于现有代码调整(用IF语句)

你当前的代码逻辑其实没问题,但存在函数定义顺序错误——tevent1()和ievent1()定义在调用它们的teamEnter()、individualEnter()之后,Python执行时会报错。只需要调整函数顺序,再保留原IF分支逻辑即可:

# 先定义事件函数,避免调用时未定义
def tevent1():
    print("This is the relay race event")
    
def ievent1():
    print("This is the tug of war event")

tnames = []
inames = []

def teamEnter():
    for x in range(4):
        tnames.append(input("Please enter a team name:"))
    print(tnames)
    tevent1()
# 循环4次输入4个团队名称

def individualEnter():
    for x in range(20):
        inames.append(input("Please enter an individual's name:"))
    print(inames)
    ievent1()
# 循环20次输入20个个人名称

def intro():
    inp = input("Would you like to hold a tournament for teams or individuals: ")
    print(' ')
    if inp == "Individuals":
        individualEnter()
    elif inp == "Teams":
        teamEnter()
# 初始选择界面

intro()

修改后,用户输入"Teams"会先完成团队名称输入,再自动运行tevent1();输入"Individuals"则对应执行个人名称输入和ievent1()。

二、更简洁的字典映射方式(替代IF分支)

如果想让代码扩展性更强(比如以后新增更多参赛类型),可以用字典建立输入值与处理逻辑的映射,比IF分支更清晰:

def tevent1():
    print("This is the relay race event")
    
def ievent1():
    print("This is the tug of war event")

tnames = []
inames = []

def handle_teams():
    for x in range(4):
        tnames.append(input("Please enter a team name:"))
    print(tnames)
    tevent1()

def handle_individuals():
    for x in range(20):
        inames.append(input("Please enter an individual's name:"))
    print(inames)
    ievent1()

# 用字典关联输入选项和对应的处理函数
option_map = {
    "Teams": handle_teams,
    "Individuals": handle_individuals
}

def intro():
    inp = input("Would you like to hold a tournament for teams or individuals: ")
    print(' ')
    # 获取对应函数并执行,无匹配则提示错误
    handler = option_map.get(inp)
    if handler:
        handler()
    else:
        print("无效选项,请输入'Teams'或'Individuals'")

intro()

这种方式的好处是,以后新增类型时,只需要加处理函数和字典键值对,不用修改分支判断,代码维护更方便。

额外场景:直接运行事件函数(跳过名称输入)

如果不需要输入名称,只想直接触发事件函数,简化intro()即可:

def tevent1():
    print("This is the relay race event")
    
def ievent1():
    print("This is the tug of war event")

def intro():
    inp = input("Would you like to hold a tournament for teams or individuals: ")
    print(' ')
    if inp == "Individuals":
        ievent1()
    elif inp == "Teams":
        tevent1()
    else:
        print("输入无效")

intro()

内容的提问来源于stack exchange,提问作者Birds

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:55:25