Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

erreur de type : builtins.TypeError: 'str' object is not callable. voici mon code !

–1 vote

def is_number(x):
try:
int(x)
return True
except ValueError:
return False

equation=input("Faites entre votre equation : ")
operateur=[]
nombre=[]
test=""
i=0
taille=len(equation)-1
while i<=taille :
if is_number(equation[i])==True :
test=test+equation[i]
b=False
j=1
while b==False :

        if is_number(equation(i+j)) : # erreur à ce niveau là!!  ERREUR : builtins.TypeError: 'str' object is not callable
            test=test+equation(i+j)

        elif equation(i+j)=="x" or equation(i+j)=="X" :
            test=test+equation(i+j)
            nombre.append(test)
            b=True
            i=i+j+1      

        else :
            nombre.append(test)
            operateur.append(equation(i+j))
            b=True
            i=i+j+1

        if b==False and i+j<taille :
            j=j+1

        else :
            if b==False and (i+j)==taille :
                b=true
                nombre.append(test)
                i=i+j+1

else :
    if equation[i]=="x" or equation[i]=="X" :
        nombre.append(equation[i])
    else :
        operateur.append(equation[i])

    i=i+1

print (nombre)
print (operateur)

demandé 10-Mar-2019 par Barney (98 points)

Peux-tu formater le code correctement et ajouter la stacktrace complète ?

2 Réponses

0 votes

equation est sûrement une chaîne et n'est donc pas utilisable en equation(params) mais effectivement, il serait mieux de donner un code plus complet et formaté :)

répondu 18-Mar-2019 par srault95 (280 points)
0 votes

Le problème ici c'est que en utilisant equation(i+j) tu dis à python "Execute la fonction equation avec le paramètre i+j". D'après le code que tu as écrit avant/après tu a surement envie de dire à python "donne moi le i+jieme caractère de la chaine de caractère équation. Pour cela il faut utiliser des crochets: equation[i+j].

J'ai l'impression que cette erreur est présente plusieurs fois dans ton code, essaye de toutes les corriger.

répondu 7-Aou-2019 par Fomys (146 points)
...