Bonjour, mon code sert à exécuter des expressions mathématiques grâce aux opérations que j'ai défini dans le dictionnaire "operations", il marche très bien mais le problème survient au moment de retourner la valeur de la la fonction "calcul_simple", cela me retourne "None" Alors que l'étape récursive d'avant, la fonction contient bien la bonne valeur, bref voila mon code :
operations = {
"=" : [0,"1 if a==b else 0"],
"-" : [1,"a-b"],
"+" : [2,"a+b"],
"/" : [3,"a/b if b!=0 else error()"],
"*" : [4,"a*b"],
"^" : [5,"a**b"],
"%" : [6,"a%b"]
}
def simplification(t): return " ".join(list(t.split()))
def operation(c,d,op):
a,b = float(c), float(d)
return eval(operations[op][1])
def calcul_simple(t):
st=False
for i in operations.keys():
if i in t:
st=True
print(t)
if st:
l=[]
for i in range(len(t)):
if t[i] in operations.keys():
l.append([t[i],i])
l=sorted(l, key=lambda x: operations[x[0]][0], reverse=True)
a,b="",""
c=l[0][1]
while True:
c=c-1
a+=t[c]
if t[c] in operations or c == 0 or c==len(t)-1:
if a[-1] in operations:
a=a[:-1]
a="".join(list(reversed(a)))
break
c=l[0][1]
while True:
c=c+1
b+=t[c]
if t[c] in operations or c == 0 or c==len(t)-1:
if b[-1] in operations:
b=b[:-1]
break
r=operation(a,b,l[0][0])
m=list(t)
c=l[0][1]-len(a)
for i in range(len(a)+len(b)+1):
m.pop(c)
m.insert(c, str(r))
calcul_simple("".join(m))
else:
return t
print(calcul_simple("2^6+3"))