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)
关键改动说明
- 字典
calc中的值是add、sub这类函数名(不带括号),代表函数本身的引用,不会立即执行 - 最后一行
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
相关产品推荐
相关产品推荐

