如何在Python字典中调用函数

2024-09-30 14:30:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python编程比较陌生,所以请原谅我的一个noob问题。我试图看看是否可以调用操作方法(add、sub、mul、div)

该程序是一个简单的计算器,它接受一系列整数和运算符,并在按下“=”后执行计算

为清晰起见,注意到了一些问题

  1. comb是用户生成的数字和运算符列表,如字典符号中所示

  2. 以comb[0]开头的行是一个测试,最终我将用一种基于comb长度的更完整的计算方法来代替它

我遇到问题的代码如下:

def calculator():
    opsymbols = {'+':add, '-':sub, '*':mul, '/':div}
    for sym in opsymbols:
        if sym == comb[1]: 
            opsymbols[sym]
            print(sym) # check to see whether the IF logic works.
    a = comb[0] 
    print(a) # check to see if assignment of "a" works
    b = comb[2]
    print(b) # check to see if assignment of "b" works

def add():
    a = int()
    b = int()
    result = a + b
    print("result =" + str(result))

def sub():
    a = int()
    b = int()
    result = a - b
    print("result =" + str(result))

def mul():
    a = int()
    b = int()
    result = a * b
    print("result =" + str(result))

def div():
    a = int()
    b = int()
    result = a / b
    print("result =" + str(result))

Tags: todivaddifdefcheckresultint
2条回答

你是说那个电话吗

opsymbols[sym]()

您也有阴影变量的问题。但您仍然在寻找上述解决方案。您需要使用键sym和函数运算符()在字典中调用func

只需创建第二个字典,其中包含指向每个函数的函数指针。或者,您可以运行eval()并在运行时添加操作代码

方法1:

op_dict = {'+': add, '-': sub, '*': mult, '/': div } # dict with function pointers

op_dict[op]() # call the function

方法2:

return eval('{num1}{op}{num2}'.format(num1=num1, op=op, num2=num2))

如果只进行这4个操作,并且只计算2个num,那么使用方法2并在calculate函数中完成所有操作可能会更容易。它看起来像:

def calculate(input):
    for op in ['+', '-', '*', '/']:
        if op in input:
            num1 = input.rsplit(op)[0]
            num2 = input.rsplit(op)[-1]
            return eval('{num1}{op}{num2}'.format(num1=num1, op=op, num2=num2))

即使有多个具有多个输入编号的操作,也可以在每个操作分隔符处进行拆分,然后通过calculate函数递归运行这些计算的列表

相关问题 更多 >