【華為機考】四則演算python言語実現

1485 ワード

次のインタフェースを実装してください.
/*機能:四則演算
*入力: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]])
    後で補足して、もっと安全な方面の資料を参考することができます