请实现如下接口
/* 功能:四则运算
* 输入:strExpression:字符串格式的算术表达式,如: "3+2*{1+2*[-4/(8-6)+7]}"
* 返回:算术表达式的计算结果
*/
public static int calculate(String strExpression)
{
/* 请实现*/
return 0;
}
约束:
pucExpression字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。
pucExpression算术表达式的有效性由调用者保证;
输入描述:
输入一个算术表达式
输出描述:
得到计算结果
示例1
输入
3+2*{1+2*[-4/(8-6)+7]}
输出
25
不得不说,python的库函数真的很多
print(eval(input()))
一. eval()函数
官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。
但是有安全问题:
假设用户恶意输入。比如:
_import__('os').system('dir')
那么eval()之后,你会发现,当前文件夹文件都会展如今用户前面。
那么继续输入:
open('文件名称').read()
代码都给人看了。
避免eval()带来的安全性问题呢
1、自行写检查函数;
2、使用ast.literal_eval:自行查看DOCUMENT
1.首先:
eval(expression[, globals[, locals]])
以后补充,可参考更多安全方面的资料