国产探花免费观看_亚洲丰满少妇自慰呻吟_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)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鹤庆县| 大姚县| 青海省| 昌吉市| 江津市| 象州县| 库伦旗| 淮南市| 开封市| 大埔区| 登封市| 沙洋县| 辛集市| 长岭县| 家居| 建宁县| 尚志市| 武义县| 宝山区| 曲阳县| 乐都县| 南阳市| 太仆寺旗| 清徐县| 海林市| 泉州市| 远安县| 阜康市| 皮山县| 江源县| 肥城市| 中西区| 上饶市| 巨野县| 乌兰浩特市| 富平县| 全南县| 正宁县| 海门市| 兰溪市| 夏邑县|