#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys,logging,os
import re
计算: s = '1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
# 1. 判断字符串的有效性:无字母、()个数能匹配上
# 2. 去除字符串中的空格
# 3. 处理最里面的括号
# 4. 处理乘法、除法
# 5. 处理加法、减法
def deal_sign(s):
    s = s.replace('--', '+')
    s = s.replace('++', '+')
    s = s.replace('+-', '-')
    return s
def multi_div(s):   #(3*6+9)
    while re.search('\d+\.?\d*[*/]\-?\d+\.?\d*', s):
        s_temp = re.search('\d+\.?\d*[*/]\-?\d+\.?\d*', s).group()
        if s_temp.count('*'):
            x,y = re.split('\*',s_temp)
            result = float(x) * float(y)
        elif s_temp.count('/'):
            x,y = re.split('\/',s_temp)
            result = float(x) / float(y)
        s = s.replace(s_temp, str(result))
    return s
def plus_mines(s):  # (1-9+1.2)
    while re.search('\-?\d+\.?\d*[-+]\d+\.?\d*', s) :
        s_temp = re.search('\-?\d+\.?\d*[-+]\d+\.?\d*', s).group()
        if re.search('\d+\.?\d*\+', s_temp):
            x,y = re.split('\+',s_temp)
            result = float(x) + float(y)
        elif re.search('\d+\.?\d*\-', s_temp):
            if s_temp.startswith('-'):
                x, y = re.split('\-', s_temp[1:])
                result = - float(x) - float(y)
            else:
                x, y = re.split('\-', s_temp)
                result = float(x) - float(y)
        s = s.replace(s_temp, str(result))
    return s
def count_reslut(source):
    if len(re.findall('[a-zA-Z]',source)) == 0 and len(re.findall('\(', source)) == len(re.findall('\)', source)):
        source_trim = source.replace(' ', '')
        while re.findall('\(', source_trim):
            # str1 = re.search('\([0-9\.\*\+/-]+\)',source_trim).group()  ##
            str1 = re.search('\([^()]+\)',source_trim).group()  ##
            source_temp = multi_div(str1)
            source_temp = plus_mines(source_temp)
            source_trim = source_trim.replace(str1, source_temp[1:-1])
            source_trim = deal_sign(source_trim)
        else:
            source_temp = multi_div(source_trim)
            source_temp = deal_sign(source_temp)
            source_temp = plus_mines(source_temp)
            source_trim = deal_sign(source_temp)
        return source_trim
    else:
        print("您输入的字符串不合法!")
s = '1 + 32 + (3 + 9) * 5 + ( 1 +3-(3*6+9)*8 + 43 * 91 +9/3*(4+71))-10-(-1)'
print(count_reslut(s))
s = '1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
print(count_reslut(s))
s='(1.5+1)'
print(count_reslut(s))