Python正則表達(dá)式實現(xiàn)簡易計算器功能示例
本文實例講述了Python正則表達(dá)式實現(xiàn)簡易計算器功能。分享給大家供大家參考,具體如下:
需求:使用正則表達(dá)式完成一個簡易計算器。
功能:能夠計算簡單的表達(dá)式。
如:1*2*((1+2)/(2+3)+1)*5.1-3+2**2
import re
class SimpleCalc(object):
# 表達(dá)式檢測
def check(self,exp):
# 合法字符檢測
res = re.findall(r"[^\d\+\-\*/\(\)\.]", exp)
print(res)
if res:
print("表達(dá)式不正確?。?!")
print("輸入了非法字符:", res)
return False
# 括號檢測
res = re.findall(r"(?:[\d\)]\()|(?:\([\*/\)])|(?:[\-\+\*/]\))",exp)
if res :
print("表達(dá)式不正確?。?!")
print("括號使用有誤:", res)
return False
res = re.findall(r"\(|\)", exp)
if res.count('(') != res.count(')'):
print("表達(dá)式不正確!?。?)
print("括號不匹配:", res)
return False
# 運算符檢測
res = re.findall(r"[\-\+/]{2,}|\*{3,}", exp)
if res:
print("表達(dá)式不正確?。。?)
print("運算符有誤:", res)
return False
# 小數(shù)點位置檢測
res = re.findall(r"(^(?<=[0-9])?\.\d+)|(\.\d*?\.)|\.(\D|$)", exp)
if res:
print("表達(dá)式不正確?。?!")
print("小數(shù)點位置有誤:", res)
return False
return True
def main():
simpleCalc = SimpleCalc()
while True:
exp = input("請輸入一個正確的表達(dá)式(退出請輸入t):\n")
if exp == 't':
break
if simpleCalc.check(exp):
print('=',eval(exp))
else:
continue
if __name__ == '__main__':
main()
輸出:
請輸入一個正確的表達(dá)式(退出請輸入t):
1*2*((1+2)/(2+3)+1)*5.1-3+2**2
[]
= 17.32
請輸入一個正確的表達(dá)式(退出請輸入t):
12+a
['a']
表達(dá)式不正確?。?!
輸入了非法字符: ['a']
請輸入一個正確的表達(dá)式(退出請輸入t):
PS:這里再為大家提供2款非常方便的正則表達(dá)式工具供大家參考使用:
JavaScript正則表達(dá)式在線測試工具:
http://tools.jb51.net/regex/javascript
正則表達(dá)式在線生成工具:
http://tools.jb51.net/regex/create_reg
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python正則表達(dá)式用法總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
使用Python的Flask框架表單插件Flask-WTF實現(xiàn)Web登錄驗證
Flask處理表單除了本身的WTForms包,使用Flask-WTF擴展來增強表單功能也是很多開發(fā)者的選擇,這里我們就來講解如何使用Python的Flask框架表單插件Flask-WTF實現(xiàn)Web登錄驗證2016-07-07
Python調(diào)用win10toast框架實現(xiàn)定時調(diào)起系統(tǒng)通知
win10toast是一個windows通知的出發(fā)框架,使用它可以輕松的調(diào)起系統(tǒng)通知。通過它可以很方便的做一個定時通知的功能應(yīng)用。本文將調(diào)用win10toast實現(xiàn)定時調(diào)起系統(tǒng)通知功能,需要的可以參考一下2022-01-01
Django對接支付寶實現(xiàn)支付寶充值金幣功能示例
今天小編就為大家分享一篇Django對接支付寶實現(xiàn)支付寶充值金幣功能示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Python中bytes和str的區(qū)別與聯(lián)系詳解
Python3最重要的新特性之一是對字符串和二進制數(shù)據(jù)流做了明確的區(qū),下面這篇文章主要給大家介紹了關(guān)于Python中bytes和str區(qū)別與聯(lián)系的相關(guān)資料,需要的朋友可以參考下2022-05-05
深入學(xué)習(xí)Python+Opencv常用四種圖像處理操作
本文主要介紹了深入學(xué)習(xí)Pytho+OpenCV實現(xiàn)的基本圖像處理操作,例如:改變圖像大小,圖片色彩轉(zhuǎn)換,圖片模糊等,代碼具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以關(guān)注一下2021-11-11
Python遠(yuǎn)程桌面協(xié)議RDPY安裝使用介紹
這篇文章主要介紹了Python遠(yuǎn)程桌面協(xié)議RDPY安裝使用介紹,本文講解了RDPY的安裝、RDPY的簡單使用兩部份內(nèi)容,需要的朋友可以參考下2015-04-04

