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

为何无论用户输入何值,所有项目都会执行?代码问题求助

问题修复方案
  • 问题根源:你在创建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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 01:17:41