本文實例為大家分享了Python實現計算器功能示例代碼,供大家參考,具體內容如下
1.簡單計算器
#計算一個表達式的時候,首先肯定是先算括號里面的,再算乘除法,后算加減法import re# 1.去括號def remove_kuohao(expression):  '''  這是一個去除括號的函數  :param expression: 傳進來的表達式  :return: 計算后的結果  '''  while True:    ret = re.search(r'/([^(]*?/)',expression) #先利用正則匹配到式子里面的括號    if ret: #如果有括號      re_expression = ret.group() #先把找到的括號group()一下得到      # print(re_expression)      res = jianhua(re_expression.strip('()')) #括號里面有*/-+都不一定,就又定義了一個簡化這個表達式的函數      # 如果是乘法就執行乘法運算,如果是除法運算就執行除法等,這樣的話就直接調用jianhua這個函數了,當然這個式子      # 有括號,順便把括號也去了,直接計算去掉括號后的式子      expression = expression.replace(re_expression,str(res)) #把計算出來的結果放回去:就是把原來的括號里的表達式                                  # 替換成現在計算的結果      # print(expression)      continue    break  res = jianhua(expression)  return res#簡化算法def jianhua(re_expression):  while True:    # 匹配乘除法    ret = re.search(r'/d+/.*?/d*[*/]/-?/d+/.?/d*', re_expression) #利用正則匹配乘除法    if ret: # 如果匹配到有*或/就執行下面的代碼      chengchu_expression = ret.group() #就先group一下得到有乘除法的表達式      res = chengchu(chengchu_expression) #調用乘除法的函數計算      re_expression = re_expression.replace(chengchu_expression, str(res)) #吧有乘除法的表達式和計算出來的結果替換      re_expression =chulifuhao(re_expression) #在調用處理符號的函數      # print(re_expression)      continue    break  # 匹配加減法  num = re.findall(r'[+-]?/d+/.?/d*', re_expression)#在沒有乘除法的時候,就讓匹配加減法,  if len(num) > 1: #如果匹配到的表達式的長度大于1,不過是加法還是減法,都讓計算加法。因為float啥結果就是啥    mynum = 0    for i in num:      mynum += float(i)    return mynum  else:    return num[0]# 3.計算兩個數的+-*/def chengchu(expression):  if '*' in expression:    x,y = expression.split('*')    return float(x)*float(y) #返回乘法運算的結果 ,讓res接收  if '/' in expression:    x, y = expression.split('/')    return float(x)/float(y)  #返回乘法運算的結果 ,讓res接收def chulifuhao(expression):  if '--' in expression:    expression = expression.replace('--','+')  if '++' in expression:    expression = expression.replace('++','+')  if '+-' in expression:    expression = expression.replace('+-','-')  if '-+' in expression:    expression = expression.replace('-+','-')  return expression #返回結果cmd = input('請輸入你要計算的表達式:>>')# s = '1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'new_s = cmd.replace(' ', '') #先將所有的空格去了# print(new_s)ret = remove_kuohao(new_s) #調用去除括號的函數,進行下一步操作print(ret)            
新聞熱點
疑難解答