为何无论用户输入何值,所有项目都会执行?代码问题求助
问题修复方案
问题根源:你在创建
projectMapping字典时,直接写了assignmentOne()这种带括号的形式——带括号会立即执行函数,所以不管用户选哪个选项,所有函数都会在字典初始化的时候挨个跑一遍。修复方法:把字典里的函数名后面的括号去掉,只存函数本身的引用,这样只有当你通过
project()调用的时候,才会执行对应的函数。
修改后的代码片段:
def runProgram(): separate() # asks user a promt and has a set max value for their input run = getValidInput("\nWould you like to run this program? Yes(1) No(2) > > > ", 2) if run == 1: # 去掉函数名后的括号,只存函数对象 projectMapping = {1: assignmentOne, 2: assignmentTwo, 3: assignmentThree, 4: assignmentFour, 5: quadratic} project = projectMapping.get(userInput) # 增加判断,避免userInput不在字典中时报错 if project: project() separate() if run == 2: # Restarts main loop, can't use continue since the method is outside the loop global main main = 0 main = 1
额外提示:加个if project:的判断很有必要,如果用户输入的数字不在1-5范围内,project会是None,直接调用会触发报错,这个判断能避免程序崩溃。
内容的提问来源于stack exchange,提问作者KingTalon23
相关产品推荐
相关产品推荐

