国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現兩款計算器功能示例

2020-02-16 11:09:53
字體:
來源:轉載
供稿:網友

本文實例為大家分享了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)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 云安县| 汽车| 望奎县| 霞浦县| 孟连| 新竹县| 齐齐哈尔市| 承德县| 湘潭县| 崇信县| 威宁| 红安县| 泾源县| 孟州市| 嵊州市| 延津县| 蛟河市| 苏尼特右旗| 达拉特旗| 浮山县| 东城区| 海口市| 西丰县| 柞水县| 石台县| 象州县| 油尖旺区| 赣州市| 壤塘县| 灵寿县| 荃湾区| 石屏县| 泸溪县| 闽侯县| 丰镇市| 青海省| 洪洞县| 涞源县| 洪洞县| 宝山区| 固始县|