溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python正則表達式實現(xiàn)簡易計算器功能示例

發(fā)布時間:2020-08-21 18:04:14 來源:腳本之家 閱讀:135 作者:微信1257309054 欄目:開發(fā)技術(shù)

本文實例講述了Python正則表達式實現(xiàn)簡易計算器功能。分享給大家供大家參考,具體如下:

需求:使用正則表達式完成一個簡易計算器。

功能:能夠計算簡單的表達式。

如:1*2*((1+2)/(2+3)+1)*5.1-3+2**2

import re
class SimpleCalc(object):
  # 表達式檢測
  def check(self,exp):
    # 合法字符檢測
    res = re.findall(r"[^\d\+\-\*/\(\)\.]", exp)
    print(res)
    if res:
      print("表達式不正確?。?!")
      print("輸入了非法字符:", res)
      return False
    # 括號檢測
    res = re.findall(r"(?:[\d\)]\()|(?:\([\*/\)])|(?:[\-\+\*/]\))",exp)
    if res :
      print("表達式不正確!!!")
      print("括號使用有誤:", res)
      return False
    res = re.findall(r"\(|\)", exp)
    if res.count('(') != res.count(')'):
      print("表達式不正確?。。?)
      print("括號不匹配:", res)
      return False
    # 運算符檢測
    res = re.findall(r"[\-\+/]{2,}|\*{3,}", exp)
    if res:
      print("表達式不正確?。?!")
      print("運算符有誤:", res)
      return False
    # 小數(shù)點位置檢測
    res = re.findall(r"(^(?<=[0-9])?\.\d+)|(\.\d*?\.)|\.(\D|$)", exp)
    if res:
      print("表達式不正確?。。?)
      print("小數(shù)點位置有誤:", res)
      return False
    return True
def main():
  simpleCalc = SimpleCalc()
  while True:
    exp = input("請輸入一個正確的表達式(退出請輸入t):\n")
    if exp == 't':
      break
    if simpleCalc.check(exp):
      print('=',eval(exp))
    else:
      continue
if __name__ == '__main__':
  main()

輸出:

請輸入一個正確的表達式(退出請輸入t):
1*2*((1+2)/(2+3)+1)*5.1-3+2**2
[]
= 17.32
請輸入一個正確的表達式(退出請輸入t):
12+a
['a']
表達式不正確?。?!
輸入了非法字符: ['a']
請輸入一個正確的表達式(退出請輸入t):

PS:這里再為大家提供2款非常方便的正則表達式工具供大家參考使用:

JavaScript正則表達式在線測試工具:
http://tools.jb51.net/regex/javascript

正則表達式在線生成工具:
http://tools.jb51.net/regex/create_reg

更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python正則表達式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對大家Python程序設(shè)計有所幫助。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI