如何使用从字符串中删除的一些运算符
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
我正在尝试根据整数之间的符号对两个整数进行加、减或乘,如 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