Problème de sortie d'une fonction PYTHON
MEZIANE002
-
loyo -
loyo -
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"))
Je vous remercie d'avance de votre aide.
A voir également:
- Problème de sortie d'une fonction PYTHON
- Fonction si et - Guide
- Citizen code python - Accueil - Outils
- Remettre un pc en sortie d'usine - Guide
- Airpods 3 date de sortie - Guide
- Samsung a33 date de sortie - Guide