Schreiben Sie eine Taschenrechnermethode mit regulären Python-Ausdrücken

高洛峰
Freigeben: 2017-03-22 10:14:58
Original
2250 Leute haben es durchsucht

Schreiben Sie eine Taschenrechnermethode mit regulären Python-Ausdrücken

#!/usr/bin/evn python
import re
def deal_negative_issue(calc_list):
new_calc_list =[] #Definieren Sie eine neue leere Liste und fügen Sie die Daten dann in die neue Liste ein, nachdem die Filterung abgeschlossen ist
for index,item in enumerate(calc_list):
if item.strip().endswith("*") oder item.strip().endswith("/"): #Wählen Sie die -Zeichenfolge aus, die mit einem Multiplikationszeichen oder Divisionszeichen endet
new_calc_list.append("%s-%s"%(calc_list[index],calc_list[index+1])) #Splicing-String-Verarbeitung ähnelt 2*5/-3
# elif ( „*“ oder „/“) in Element: #Suchen Sie die Optionen mit Multiplikation und Division in der Liste. Ich habe diese Schreibweise ausprobiert und es scheint, dass sie nur mit * übereinstimmt, aber 40/5 allein stimmt nicht mit
überein elif ("/ ") im Element oder ("*") im Element:
🎜> return new_calc_list

def deal_unusual_issue(formula):
Formula = Formula.replace ("++", "+")
Formel = Formel.replace(" +-", "-") Formel = Formel.replace("-+", "-") Formel = Formula.replace("--", "+")
Formula = Formula .replace("- -", "+")
Formel zurückgeben

# def Addition_and_Subtraction(Formel):
# sub_calc_list = re.split("[+-]",formula)
# sub_operator_list = re.findall("[+-]",formula)
# print(type(sub_calc_list), sub_operator_list )
# totle_res = None
# für index,i in enumerate(sub_calc_list ):
# wenn totle_res: #sub_res wahr ist, was anzeigt, dass dies nicht die erste
Schleife
# if sub_operator_list[index-1]=="+": #Nach Index in sub_operator_list Bestimmen Sie, ob es sich um Addition oder Subtraktion handelt totle_res -= float(i)
# else:
# sub_res = float(i )
# print(totle_res)
def rechnen(formel):
print("operation",formula)
calc_list = re.split("[+-]" ,Formel) #Trennen Sie jede Multiplikations- und Divisionsoperation durch ein +-Zeichen calc_list = deal_negative_issue(calc_list) print(calc_list)
für Element in calc_list: sub_calc_list = re.split("[* /]",item) sub_operator_list = re.findall("[*/]",item) #Trennen Sie die Multiplikations- und Divisionszeichen in einer Liste
print (sub_calc_list,sub_operator_list)
sub_res = None
für index,i in enumerate(sub_calc_list):
wenn sub_res: #sub_res wahr ist, was anzeigt, dass dies nicht das erste Mal in der Schleife ist
if sub_operator_list[index-1]=="*":       #Bestimmen Sie, ob es sich um eine Addition oder Subtraktion durch den Index in sub_operator_list handelt,                                                                                                               sub_res /= float(i ) Sonst:
sub_res = Float (i)

Print ("[%s] ="%item, sub_res)
Formula = Formula.replace (ITEM, STR (SUB_RS)) )
Formula = deal_unusual_issue(formula)
print(formula )

#Berechnung+-Methode
totle_calc_list = re.split("[+-]", Formel)
totle_operator_ list = re.findall("[+-]", Formel) # Trennen die Multiplikations- und Divisionszeichen in einer Liste
print(totle_calc_list, totle_operator_list)
totle_res = None
für Index, Element in Enumerate( totle_calc_list):
if totle_res: #sub_res ist wahr, was darauf hinweist, dass dies der Fall ist ist nicht der erste Zyklus
if totle_operator_list[index-1]=="+": #Bestimmen Sie, ob es sich um eine Addition oder Subtraktion durch den Index in sub_operator_list handelt
Totle_res+= Float (item)
Sonst:
TOTLE_RES- = Float (Element)
Sonst:
TOTLE_RES = Float (Element)
#Return-Formel
Drucken Sie „[result]=", totle_res)
return totle_res

def calc(formula):
parentheses_flag = True
calc_res = None

while
parentheses_flag:
m = re.search("([^()]* )",formula) #Finden Sie die unteren Klammern, eine nach der anderen
print(m) if m: # Print (Type (m.group ()))
subformula = m.group (). Strip ("()")#Gefundene Klammern entfernen
Subres = Calculated (subformula)
FORMULA = Formula.replace(m.group(),str(subres))
                                 else: parentheses_flag = Falsch

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)")

#Hinweis: -40/5-Funktion ist nicht implementiert

Das obige ist der detaillierte Inhalt vonSchreiben Sie eine Taschenrechnermethode mit regulären Python-Ausdrücken. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage