Problème de sortie d'une fonction PYTHON

Fermé
MEZIANE002 - 16 mars 2023 à 22:08
 loyo - 16 mars 2023 à 22:38

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

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

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