欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年04月29日 11:10:39   作者:jack-boy  
本篇文章主要介紹了Python 正則表達式實現(xiàn)計算器功能的示例。具有很好的參考價值。下面跟著小編一起來看下吧

需求:

用戶輸入運算表達式,終端顯示計算結果

代碼:

# !/usr/bin/env/ python3
# -*- coding: utf-8 -*-

"""用戶輸入計算表達式,顯示計算結果"""

__author__ = 'Jack'

import re

bracket = re.compile(r'\([^()]+\)') # 尋找最內層括號規(guī)則
mul = re.compile(r'(\d+\.?\d*\*-\d+\.?\d*)|(\d+\.?\d*\*\d+\.?\d*)') # 尋找乘法運算規(guī)則
div = re.compile(r'(\d+\.?\d*/-\d+\.?\d*)|(\d+\.?\d*/\d+\.?\d*)') # 尋找除法運算規(guī)則
add = re.compile(r'(-?\d+\.?\d*\+-\d+\.?\d*)|(-?\d+\.?\d*\+\d+\.?\d*)') # 尋找加法運算規(guī)則
sub = re.compile(r'(\d+\.?\d*--\d+\.?\d*)|(\d+\.?\d*-\d+\.?\d*)') # 尋找減法運算規(guī)則
c_f = re.compile(r'\(?\+?-?\d+\)?') # 檢查括號內是否運算完畢規(guī)則
strip = re.compile(r'[^(].*[^)]') # 脫括號規(guī)則

def Mul(s):
 """計算表達式中的乘法運算"""
 exp = re.split(r'\*', mul.search(s).group())
 return s.replace(mul.search(s).group(), str(float(exp[0]) * float(exp[1])))

def Div(s):
 """計算表達式中的除法運算"""
 exp = re.split(r'/', div.search(s).group())
 return s.replace(div.search(s).group(), str(float(exp[0]) / float(exp[1])))

def Add(s):
 """計算表達式中的加法運算"""
 exp = re.split(r'\+', add.search(s).group())
 return s.replace(add.search(s).group(), str(float(exp[0]) + float(exp[1])))

def Sub(s):
 """計算表達式中的減法運算"""
 exp = re.split(r'-', sub.search(s).group())
 return s.replace(sub.search(s).group(), str(float(exp[0]) - float(exp[1])))

def calc():
 while True:
  s = input('Please input the expression(q for quit):') # 例:'1+2- (3* 4-3/2+ ( 3-2*(3+ 5 -3* -0.2-3.3*2.2 -8.5/ 2.4 )+10) +10)'
  if s == 'q':
   break
  else:
   s = ''.join([x for x in re.split('\s+', s)]) # 將表達式按空格分割并重組
   if not s.startswith('('): # 若用戶輸入的表達式首尾無括號,則統(tǒng)一格式化為:(表達式)
    s = str('(%s)' % s)
   while bracket.search(s): # 若表達式s存在括號
    s = s.replace('--', '+') # 檢查表達式,并將--運算替換為+運算
    s_search = bracket.search(s).group() # 將最內層括號及其內容賦給變量s_search
    if div.search(s_search): # 若除法運算存在(必須放在乘法之前)
     s = s.replace(s_search, Div(s_search)) # 執(zhí)行除法運算并將結果替換原表達式
    elif mul.search(s_search): # 若乘法運算存在
     s = s.replace(s_search, Mul(s_search)) # 執(zhí)行乘法運算并將結果替換原表達式
    elif sub.search(s_search): # 若減法運算存在(必須放在加法之前)
     s = s.replace(s_search, Sub(s_search)) # 執(zhí)行減法運算并將結果替換原表達式
    elif add.search(s_search): # 若加法運算存在
     s = s.replace(s_search, Add(s_search)) # 執(zhí)行加法運算并將結果替換原表達式
    elif c_f.search(s_search): # 若括號內無任何運算(類似(-2.32)除外)
     s = s.replace(s_search, strip.search(s_search).group()) # 將括號脫掉,例:(-2.32)---> -2.32

   print('The answer is: %.2f' % (float(s)))
if __name__ == '__main__':
 calc()

運行效果:

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

相關文章

  • Python批量刪除或移動指定圖像的實現(xiàn)示例

    Python批量刪除或移動指定圖像的實現(xiàn)示例

    本文主要介紹了Python批量刪除或移動指定圖像,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • Pytest?fixture及conftest相關詳解

    Pytest?fixture及conftest相關詳解

    這篇文章主要介紹了Pytest?fixture及conftest相關詳解,fixture是在測試函數(shù)運行前后,由pytest執(zhí)行的外殼函數(shù),更多相關內容需要的朋友可以參考一下
    2022-09-09
  • Python 處理數(shù)據(jù)的實例詳解

    Python 處理數(shù)據(jù)的實例詳解

    這篇文章主要介紹了Python 處理數(shù)據(jù)的實例詳解的相關資料,這里主要介紹Python 常用的基礎知識并附實例,需要的朋友可以參考下
    2017-08-08
  • 基于Python測試程序是否有錯誤

    基于Python測試程序是否有錯誤

    這篇文章主要介紹了基于Python測試程序是否有錯誤,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • jupyter lab的目錄調整及設置默認瀏覽器為chrome的方法

    jupyter lab的目錄調整及設置默認瀏覽器為chrome的方法

    這篇文章主要介紹了jupyter lab的目錄調整及設置默認瀏覽器為chrome的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python 實現(xiàn)漢諾塔游戲

    python 實現(xiàn)漢諾塔游戲

    這篇文章主要介紹了python 實現(xiàn)漢諾塔游戲的示例,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-11-11
  • matplotlib 向任意位置添加一個子圖(axes)

    matplotlib 向任意位置添加一個子圖(axes)

    這篇文章主要介紹了matplotlib 向任意位置添加一個子圖(axes),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • python線程優(yōu)先級隊列知識點總結

    python線程優(yōu)先級隊列知識點總結

    在本篇文章里小編給大家整理的一篇關于python線程優(yōu)先級隊列知識點總結,有興趣的朋友們可以學習參考下。
    2021-02-02
  • Tensorflow中的圖(tf.Graph)和會話(tf.Session)的實現(xiàn)

    Tensorflow中的圖(tf.Graph)和會話(tf.Session)的實現(xiàn)

    這篇文章主要介紹了Tensorflow中的圖(tf.Graph)和會話(tf.Session)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • 特征臉(Eigenface)理論基礎之PCA主成分分析法

    特征臉(Eigenface)理論基礎之PCA主成分分析法

    這篇文章主要為大家詳細介紹了特征臉理論基礎之PCA主成分分析法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03

最新評論