如何使用从字符串中删除的一些运算符

How to use some operator that has been scraped from a string

我正在尝试根据整数之间的符号对两个整数进行加、减或乘,如 5 + 6 中所示。当我在脚本中明确使用 + 时,它起作用了。但是,我希望从给定的字符串中解析该运算符,以便使用 int(numbers[0]) + operator + int(numbers[1]) 或类似的东西。

我试过:

import re

str_number = "5 + 6"

numbers = re.findall('[0-9]+', str_number)
operator = re.findall('([^\s\d]+?)',str_number)[0]
result = int(numbers[0]) + operator + int(numbers[1])
print(result)

当我 运行 以上时,我得到以下错误:

result = int(numbers[0]) + operator + int(numbers[1])
TypeError: unsupported operand type(s) for +: 'int' and 'str'

试试吧,将方程式转换为字符串并使用 eval() 函数

result = numbers[0] + operator + numbers[1]
print(eval(result))

如果我是对的,那是不可能的,因为运算符变量是一个 str 而数字变量是一个 int,如果不进行类型转换,你就不能对它们做任何事情 但是您可以使用 if else 语句来实现您的想法。

您可以使用内置的 operator 模块并定义一个 mappings 字典,将给定的运算符映射到其相应的操作。 使用:

import operator

mappings = {'+': operator.add, '-': operator.sub, '*': operator.mul, '/': operator.floordiv}

equation = "5 + 6"
n1, op, n2 = equation.split()
result = mappings[op](int(n1), int(n2))

print(result)

这会打印:

11