本篇文章為大家展示了使用python實現(xiàn)一個簡單計算器,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
10余年專注成都網(wǎng)站制作,企業(yè)網(wǎng)站設(shè)計,個人網(wǎng)站制作服務(wù),為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設(shè)計流程、步驟,成功服務(wù)上千家企業(yè)。為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù),專注于企業(yè)網(wǎng)站設(shè)計,高端網(wǎng)頁制作,對火鍋店設(shè)計等多個方面,擁有豐富的營銷推廣經(jīng)驗。用戶輸入一個類似 1-2*((60-30+(-40/5)*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2)) 這樣的表達式,假設(shè)表達式里面除了包含空格、'+'、'-'、'*'、'/'和括號再無其他特殊符號,然后自己動手寫代碼解析其中的表達式,實現(xiàn)加減乘除,最后得出的結(jié)果與真實的計算機所算的結(jié)果必須一致。
1、為了分開運算符和數(shù)字,因此把輸入的字符串格式轉(zhuǎn)換為 列表的格式進行處理,這樣子就可以按位進行 處理了
2、實現(xiàn)功能的核心點在于括號、乘除、加減的優(yōu)先級排序,因此我們先想辦法一層一層的去括號,即從最里層的括號開始計算,然后去掉第一層括號,然后一直繼續(xù)這個 過程,最后得到一個沒有括號的列表,再進行計算得出結(jié)果
3、去括號方式:最內(nèi)層的括號內(nèi)的表達式就可以當做一個無括號表達式,通過先 運算出乘除,再運算出加減得出整個括號內(nèi)的值,用這個結(jié)果值整體替換括號內(nèi)的內(nèi)容即實現(xiàn)了去一層括號,然后通過遞歸去除所有的括號
4、去除乘除號方式:見 remove_multiplication_division(eq) 函數(shù)部分
5、去除加減號 方式:見 remove_plus_minus(eq) 函數(shù)部分
1、主函數(shù)
def caculator(eq): format_list = eq_format(eq) # 把字符串變成格式化列表形式 s_eq = simplify(format_list) # 去括號,得到無括號的一個格式化列表 ans = calculate(s_eq) # 計算最終結(jié)果 if len(ans) == 2: # 判斷最終結(jié)果為正數(shù)還是負數(shù) ans = -float(ans[1]) else: ans = float(ans[0]) return ans