如何根据用户输入执行对应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
相关产品推荐
相关产品推荐

