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

Python字典实现简易计算器问题:执行所有函数而非指定函数

解决Python计算器字典实现时执行所有函数的问题

你当前代码的核心问题是:创建calc字典时,直接写了1:add(no1,no2)这类写法——这会在字典初始化的瞬间就立刻调用所有运算函数,所以不管你选择哪个操作,加减乘除都会被执行一遍,导致输出所有结果。

修正方案

把字典里的值改成函数本身(不要加括号调用),等用户选好操作后,再根据键取出函数并传入参数执行。

修正后的代码

def add(a,b):
    print(a+b)
def sub(a,b):
    print(a-b)
def mult(a,b):
    print(a*b)
def div(a,b):
    print(a/b)

while True:    
    print("1. + \n2. -\n3. * \n4. / \n5. Exit")
    choice = int(input("Enter your choice: "))
   
    if choice ==5:
        print("Thank you for using My c@|cu|@t0r")
        break
    else:
        no1 = int(input("Enter first no: "))
        no2 = int(input("Enter second no: "))
        # 字典存储函数对象,而非函数调用的结果
        calc = {
            1: add,
            2: sub,
            3: mult,
            4: div
        }
        # 根据选择的键取出函数,传入参数执行
        calc[choice](no1, no2)

关键改动说明

  1. 字典calc中的值是add、sub这类函数名(不带括号),代表函数本身的引用,不会立即执行
  2. 最后一行calc[choice](no1, no2)才是真正触发选中函数的执行,同时传入两个数字参数

额外优化(可选)

可以增加输入合法性判断,避免用户输入1-5之外的数字导致报错:

if choice in calc:
    calc[choice](no1, no2)
else:
    print("Invalid choice, please enter a number between 1 and 5")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:18:22