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

请实现如下接口

    /* 功能:四则运算

     * 输入:strExpression:字符串格式的算术表达式,如: "3+2*{1+2*[-4/(8-6)+7]}"

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

     */

    public static int calculate(String strExpression)

    {

        /* 请实现*/

        return 0;

    } 

约束:

  1. pucExpression字符串中的有效字符包括[‘0’-‘9’],‘+’,‘-’, ‘*’,‘/’ ,‘(’, ‘)’,‘[’, ‘]’,‘{’ ,‘}’。

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

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

你可能感兴趣的:(【华为机考】四则运算python语言实现)