Rumah pembangunan bahagian belakang Tutorial Python 使用python正则表达式编写一个计算器方法

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

Mar 22, 2017 am 10:14 AM
ungkapan biasa 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功能没有实现

Atas ialah kandungan terperinci 使用python正则表达式编写一个计算器方法. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menggunakan ungkapan biasa Python untuk pemprosesan fail Word Cara menggunakan ungkapan biasa Python untuk pemprosesan fail Word Jun 22, 2023 am 09:57 AM

Ekspresi biasa Python ialah alat padanan yang berkuasa yang boleh membantu kami mengenal pasti dan menggantikan teks, gaya dan format dengan cepat dalam pemprosesan fail Word. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa Python untuk pemprosesan fail Word. 1. Pasang perpustakaan Python-docx Python-docx ialah perpustakaan berfungsi untuk memproses dokumen Word dalam Python Anda boleh menggunakannya untuk membaca, mengubah suai, mencipta dan menyimpan dokumen Word dengan cepat. Sebelum menggunakan Python-docx, anda perlu memastikan

Cara menggunakan ungkapan biasa Python untuk memproses nombor dan jumlah Cara menggunakan ungkapan biasa Python untuk memproses nombor dan jumlah Jun 23, 2023 am 08:21 AM

Ungkapan biasa Python ialah alat berkuasa yang membantu kami melakukan pemadanan dan carian yang tepat dan cekap dalam data teks. Ungkapan biasa juga amat berguna dalam pemprosesan nombor dan jumlah, dan boleh mencari dan mengekstrak maklumat nombor dan jumlah dengan tepat. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa Python untuk memproses nombor dan jumlah, membantu pembaca menangani tugas pemprosesan data sebenar dengan lebih baik. 1. Nombor proses 1. Padankan integer dan nombor titik terapung Dalam ungkapan biasa, untuk memadankan integer dan nombor titik terapung, anda boleh menggunakan d+ untuk padanan.

Cara menggunakan ungkapan biasa Python untuk orkestrasi kontena Cara menggunakan ungkapan biasa Python untuk orkestrasi kontena Jun 22, 2023 am 09:16 AM

Dalam orkestrasi kontena, kita selalunya perlu menapis, memadankan dan menggantikan beberapa maklumat. Python menyediakan ungkapan biasa, alat berkuasa yang boleh membantu kami menyelesaikan operasi ini. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa Python untuk orkestrasi kontena, termasuk pengetahuan asas ungkapan biasa, cara menggunakan modul Pythonre dan beberapa aplikasi ungkapan biasa biasa. 1. Pengetahuan asas tentang ungkapan biasa Ungkapan biasa (RegularExpression) merujuk kepada corak teks, digunakan

Cara menggunakan ungkapan biasa Python untuk pembahagian perkataan Cara menggunakan ungkapan biasa Python untuk pembahagian perkataan Jun 23, 2023 am 10:37 AM

Ungkapan biasa Python ialah alat yang berkuasa untuk memproses data teks. Dalam pemprosesan bahasa semula jadi, pembahagian perkataan adalah tugas penting, yang memisahkan teks kepada perkataan individu. Dalam Python, kita boleh menggunakan ungkapan biasa untuk menyelesaikan tugas pembahagian perkataan. Berikut akan menggunakan Python3 sebagai contoh untuk memperkenalkan cara menggunakan ungkapan biasa untuk pembahagian perkataan. Import modul semula Modul semula ialah modul ekspresi biasa terbina dalam Python Anda perlu mengimport modul terlebih dahulu. teks definisi import

Cara menggunakan ungkapan biasa Python untuk pemfaktoran semula kod Cara menggunakan ungkapan biasa Python untuk pemfaktoran semula kod Jun 23, 2023 am 09:44 AM

Dalam pengekodan harian, kita sering perlu mengubah suai dan membina semula kod untuk meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Salah satu alat penting ialah ungkapan biasa. Artikel ini akan memperkenalkan beberapa teknik biasa tentang cara menggunakan ungkapan biasa Python untuk pemfaktoran semula kod. 1. Cari dan Ganti Salah satu fungsi ungkapan biasa yang paling biasa digunakan ialah cari dan ganti. Katakan kita perlu menggantikan semua kenyataan cetakan dalam kod dengan kenyataan log. Kita boleh menggunakan ungkapan biasa berikut untuk mencarinya: prints*((.

Cara menggunakan ungkapan biasa Python untuk pengekstrakan kandungan Cara menggunakan ungkapan biasa Python untuk pengekstrakan kandungan Jun 22, 2023 pm 03:04 PM

Python ialah bahasa pengaturcaraan peringkat tinggi yang digunakan secara meluas dengan set perpustakaan dan alatan yang kaya yang menjadikan pengekstrakan kandungan lebih mudah dan lebih cekap. Antaranya, ungkapan biasa adalah alat yang sangat penting, dan Python menyediakan modul semula untuk menggunakan ungkapan biasa untuk pengekstrakan kandungan. Artikel ini akan memperkenalkan anda kepada langkah khusus tentang cara menggunakan ungkapan biasa Python untuk pengekstrakan kandungan. 1. Fahami sintaks asas ungkapan biasa Sebelum menggunakan ungkapan biasa Python untuk pengekstrakan kandungan, anda perlu memahami sintaks asas ungkapan biasa.

Cara menggunakan ungkapan biasa Python untuk struktur data dan algoritma Cara menggunakan ungkapan biasa Python untuk struktur data dan algoritma Jun 22, 2023 pm 08:01 PM

Ekspresi biasa Python ialah alat pemprosesan rentetan berdasarkan padanan corak, yang boleh membantu kami mengekstrak maklumat yang diperlukan daripada teks dengan cepat dan cekap. Dalam struktur data dan algoritma, ungkapan biasa boleh digunakan untuk melaksanakan pemadanan teks, penggantian, pembahagian dan fungsi lain, memberikan sokongan yang lebih berkuasa untuk pengaturcaraan kami. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa Python untuk struktur data dan algoritma. 1. Pengetahuan asas ungkapan biasa Sebelum bermula, mari kita fahami beberapa pengetahuan asas ungkapan biasa: Set aksara: diwakili oleh kurungan segi empat sama,

Cara menggunakan ungkapan biasa Python untuk estetika kod dan pengalaman pengguna Cara menggunakan ungkapan biasa Python untuk estetika kod dan pengalaman pengguna Jun 22, 2023 am 08:45 AM

Dalam pembangunan perisian, estetika kod dan pengalaman pengguna sering diabaikan, yang membawa kepada banyak masalah perisian dalam penggunaan sebenar. Python, sebagai bahasa pengaturcaraan yang berkuasa, menyediakan ungkapan biasa sebagai alat yang berkuasa untuk membantu kami menyelesaikan masalah ini. Artikel ini akan memperkenalkan cara menggunakan ungkapan biasa Python untuk estetika kod dan pengalaman pengguna. 1. Pengenalan kepada ungkapan biasa Python Ungkapan biasa ialah bahasa yang menerangkan corak teks dan boleh digunakan untuk memadankan, mencari, menggantikan dan memisahkan teks. Modul semula Python menyediakan

See all articles