Problème de sortie d'une fonction PYTHON

MEZIANE002 -  
 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:

1 réponse

loyo
 

Bonsoir, manque le return de ta fonction récursive.

return calcul_simple("".join(m))
0