Python中如何使用从字符串解析的运算符执行数值计算
基于拆分得到的操作数、运算符实现运算的方案
这里提供两种常用实现方式,可根据你的场景选择:
1. 快速实现(仅适用输入完全可控的场景)
直接用Python内置的eval()函数拼接表达式执行即可,代码示例:
op01, sym0, op02 = "1", "+", "5" result = eval(f"{op01}{sym0}{op02}") print(result) # 输出结果为6
注意:
eval()会执行任意传入的字符串内容,如果你的输入包含不可控的用户提交内容,会存在代码注入风险,该方式仅适合输入完全由你自己的解析逻辑生成的场景使用。
2. 安全实现(全场景通用)
提前建立运算符和运算逻辑的映射表,先将两个操作数字符串转为数值类型,再调用对应运算逻辑计算,无注入风险,代码示例:
import operator # 可按需扩展支持的运算符 operator_mapping = { "+": operator.add, "-": operator.sub, "*": operator.mul, "/": operator.truediv, "%": operator.mod, "**": operator.pow } op01, sym0, op02 = "1", "+", "5" # 转为数值,若存在小数场景可替换为float() num1 = int(op01) num2 = int(op02) result = operator_mapping[sym0](num1, num2) print(result) # 输出结果为6
内容的提问来源于stack exchange,提问作者Lone Programmer
相关产品推荐
相关产品推荐

