【华为机考】四则运算python语言实现

匿名 (未验证) 提交于 2019-12-02 22:51:30

请实现如下接口

功能:四则运算

输入:strExpression:字符串格式的算术表达式,如

返回:算术表达式的计算结果

publicstaticint

请实现*/

return

约束:

  1. pucExpression字符串中的有效字符包括[

  2. 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]])

以后补充,可参考更多安全方面的资料

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!