首页 后端开发 Python教程 使用python正则表达式编写一个计算器方法

使用python正则表达式编写一个计算器方法

Mar 22, 2017 am 10:14 AM
python正则表达式

使用python正则表达式编写一个计算器方法

#!/usr/bin/evn python
import re
def deal_negative_issue(calc_list):
    new_calc_list=[]    #定义一个新的空列表,后面筛选完成后将数据放入新列表中
    for index,item in enumerate(calc_list):
        if item.strip().endswith("*") or item.strip().endswith("/"):    #挑选出以乘号或除号结尾的字符串
            new_calc_list.append("%s-%s"%(calc_list[index],calc_list[index+1])) #拼接字符串 处理类似2*5/-3
        # elif ("*" or "/") in item:  #找出列表中的有乘除的选项,这种写法我试了好像只匹配*在,单独40/5这种匹配不出来
        elif ("/") in item or ("*") in item:
            print(item)
            new_calc_list.append(item)

    print("new_calc_ist",new_calc_list)
    return new_calc_list

def deal_unusual_issue(formula):
    formula = formula.replace("++","+")
    formula = formula.replace("+-", "-")
    formula = formula.replace("-+", "-")
    formula = formula.replace("--", "+")
    formula = formula.replace("- -", "+")
    return formula

# def addition_and_subtraction(formula):
#     sub_calc_list = re.split("[+-]",formula)
#     sub_operator_list = re.findall("[+-]",formula)
#     print(type(sub_calc_list), sub_operator_list)
#     totle_res = None
#     for index,i in enumerate(sub_calc_list):
#         if totle_res: #sub_res为真,表示这不是第一次循环
#             if sub_operator_list[index-1]=="+":     #通过sub_operator_list中的index判断到底是加法还是减法
#                     totle_res += float(i)
#             else:
#                     totle_res -= float(i)
#         else:
#             sub_res = float(i)
#     print(totle_res)


def calculating(formula):
    print("运算",formula)
    calc_list = re.split("[+-]",formula)    #通过+-符号将各个乘除运算分隔出来
    calc_list = deal_negative_issue(calc_list)
    print(calc_list)
    for item in calc_list:
        sub_calc_list = re.split("[*/]",item)
        sub_operator_list = re.findall("[*/]",item)     #将乘号除号通过列表方式分隔出来
        print(sub_calc_list,sub_operator_list)
        sub_res = None
        for index,i in enumerate(sub_calc_list):
            if sub_res: #sub_res为真,表示这不是第一次循环
                if sub_operator_list[index-1]=="*":     #通过sub_operator_list中的index判断到底是加法还是减法,
                    sub_res *= float(i)
                else:
                    sub_res /= float(i)
            else:
                sub_res = float(i)

        print("[%s]="%item,sub_res)
        formula = formula.replace(item,str(sub_res))
        formula = deal_unusual_issue(formula)
        print(formula)

        #计算+-法
    totle_calc_list = re.split("[+-]", formula)
    totle_operator_list = re.findall("[+-]", formula)  # 将乘号除号通过列表方式分隔出来
    print(totle_calc_list, totle_operator_list)
    totle_res = None
    for index,item in enumerate(totle_calc_list):
        if totle_res: #sub_res为真,表示这不是第一次循环
            if totle_operator_list[index-1]=="+":     #通过sub_operator_list中的index判断到底是加法还是减法,
                totle_res += float(item)
            else:
                totle_res -= float(item)
        else:
            totle_res = float(item)
        # return formula
    print("[结果]=", totle_res)
    return totle_res

def calc(formula):
    parentheses_flag = True
    calc_res = None
    while parentheses_flag:
        m = re.search("\([^()]*\)",formula)  #找出最底层的括号,一个一个找
        print(m)
        if m:
            # print(type(m.group()))
            subformula = m.group().strip("()")  #把找出来的括号剥离
            subres = calculating(subformula)
            formula = formula.replace(m.group(),str(subres))
        else:
            print("没括号了")
            print("最终结果为",calculating(formula))
            parentheses_flag = False

if name == 'main':
    res = calc("1 - 2 * ( (60-30 +(9-2*5/-3 + 7 /3*99/4*2998 +10 * 568/14 ) * (40/5)) - (4*3)/ (16-3*2) )")
    #res = calc("2 * (40/5)")

#备注:-40/5功能没有实现

以上是使用python正则表达式编写一个计算器方法的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何使用Python正则表达式进行Word文件处理 如何使用Python正则表达式进行Word文件处理 Jun 22, 2023 am 09:57 AM

Python正则表达式是一种强大的匹配工具,它可以帮助我们在Word文件处理中快速识别并替换文字、样式和格式。本文将介绍如何使用Python正则表达式进行Word文件处理。一、安装Python-docx库Python-docx是Python中处理Word文档的功能库,使用它可以快速读取、修改、创建和保存Word文档。在使用Python-docx之前,需要保证

如何使用Python正则表达式处理数字和金额 如何使用Python正则表达式处理数字和金额 Jun 23, 2023 am 08:21 AM

Python正则表达式是一种强大的工具,可帮助我们在文本数据中进行精细、高效的匹配和搜索。在数字和金额的处理中,正则表达式也极为有用,可以准确地找到并提取其中的数字和金额信息。本文将介绍如何使用Python正则表达式处理数字和金额,帮助读者更好地应对实际的数据处理任务。一、处理数字1.匹配整数和浮点数正则表达式中,要匹配整数和浮点数,可以使用d 进行匹配,其

如何使用Python正则表达式进行容器编排 如何使用Python正则表达式进行容器编排 Jun 22, 2023 am 09:16 AM

在容器编排中,我们常常需要对一些信息进行筛选、匹配和替换等操作。Python提供了正则表达式这一强大的工具,可以帮助我们完成这些操作。本文将介绍如何使用Python正则表达式进行容器编排,包括正则基础知识、Pythonre模块的使用方法以及一些常见的正则表达式应用。一、正则表达式基础知识正则表达式(RegularExpression)是指一种文本模式,用

如何使用Python正则表达式进行单词分割 如何使用Python正则表达式进行单词分割 Jun 23, 2023 am 10:37 AM

Python正则表达式是一种强大的工具,可用于处理文本数据。在自然语言处理中,单词分割是一个重要的任务,它可以将一段文本分成单个单词。在Python中,我们可以使用正则表达式来完成单词分割的任务。下面将以Python3为例,介绍如何使用正则表达式进行单词分割。导入re模块re模块是Python内置的正则表达式模块,首先需要导入该模块。importre定义文

如何使用Python正则表达式进行代码重构 如何使用Python正则表达式进行代码重构 Jun 23, 2023 am 09:44 AM

在日常编码中,我们经常需要对代码进行修改和重构,以增加代码的可读性和可维护性。其中一个重要的工具就是正则表达式。本篇文章将介绍如何使用Python正则表达式进行代码重构的一些常用技巧。一、查找和替换正则表达式最常用的功能之一是查找和替换。假设我们需要将代码中所有的print语句替换成logging语句。我们可以使用以下正则表达式进行查找:prints*((.

如何使用Python正则表达式进行内容提取 如何使用Python正则表达式进行内容提取 Jun 22, 2023 pm 03:04 PM

Python是一种广泛使用的高级编程语言,拥有丰富的库和工具,使得内容提取变得更加简单和高效。其中,正则表达式是一种非常重要的工具,Python提供了re模块来使用正则表达式进行内容提取。本文将为您介绍如何使用Python正则表达式进行内容提取的具体步骤。一、了解正则表达式的基本语法在使用Python正则表达式进行内容提取之前,首先需要了解正则表达式的基本语

如何用Python正则表达式和LaTeX解析库处理LaTeX公式中的多层括号? 如何用Python正则表达式和LaTeX解析库处理LaTeX公式中的多层括号? Apr 01, 2025 pm 12:45 PM

Python正则表达式处理LaTeX多层括号,构建多维字典许多LaTeX...

如何使用Python正则表达式进行数据结构和算法 如何使用Python正则表达式进行数据结构和算法 Jun 22, 2023 pm 08:01 PM

Python正则表达式是一种基于模式匹配的字符串处理工具,它可以帮助我们快速有效地从文本中提取所需信息。在数据结构和算法中,正则表达式可以用来实现文本匹配、替换、分割等功能,为我们的编程提供更加强大的支持。本文将介绍如何使用Python正则表达式进行数据结构和算法。一、正则表达式的基础知识在开始之前,先了解一下正则表达式的一些基础知识:字符集:用方括号表示,

See all articles