Python 3.x 我是否可以使用变量来表示'+-*/';用python

Python 3.x 我是否可以使用变量来表示'+-*/';用python,python-3.x,Python 3.x,我试图实现功能,但不使用: if op == '+': return a+b if op == '-': return a+b if op == '*': return a+b if op == '/': return a+b 您可以使用eval(f{a}{op}{b}”)来实现这一点,但这是一种安全风险 可能会使用更好的方法,这是基本操作的函数包装(但我们仍然需要dict将符号转换为名称): 您可以将其包装在try/块中,但块除外,以捕获不受支持

我试图实现功能,但不使用:

if op == '+':

    return a+b

if op == '-':

    return a+b

if op == '*':

    return a+b

if op == '/':

    return a+b

您可以使用
eval(f{a}{op}{b}”)
来实现这一点,但这是一种安全风险

可能会使用更好的方法,这是基本操作的函数包装(但我们仍然需要dict将符号转换为名称):

您可以将其包装在
try
/
块中,但
块除外,以捕获不受支持的操作(以及除零):

将用户交互移到函数之外是一个好主意,以强制和避免


Todo:如果用户未能输入
int
并为多个提示添加循环,则改进错误处理

可能重复的谢谢,现在更优雅了!如果它解决了问题,就考虑接受答案。谢谢
def calculator():
    """op will be a sign that used between a and b, a op b ==?"""

    a = int(input('a: '))
    b = int(input('b: '))
    op = (input('op: '))
    basic = ['+','-','*','/']
    if op not in basic:
        return 'this is a base calculator, use + - * / only'
    else:
        return a op b
import operator

ops = {
    "+": operator.add,
    "-": operator.sub,
    "*": operator.mul,
    "/": operator.truediv,
}
a = 7
b = 6
op = "*"
print(ops[op](a, b)) # => 42
import operator

def calculate(op, a, b):
    try:
        return {
            "+": operator.add,
            "-": operator.sub,
            "*": operator.mul,
            "/": operator.truediv,
        }[op](a, b) 
    except KeyError: pass

if __name__ == "__main__":
    a = int(input('a: '))
    b = int(input('b: '))
    op = input('op: ')
    result = calculate(op, a, b)

    if result is None:
        print('this is a base calculator, use + - * / only')
    else:
        print(result)