92 votes

TypeError : l'objet 'int' n'est pas appelable

Étant donné les nombres entiers et le calcul suivants

 from __future__ import division

a = 23
b = 45
c = 16

round((a/b)*0.9*c)

Cela se traduit par :

 TypeError: 'int' object is not callable.

Comment puis-je arrondir la sortie à un nombre entier ?

230voto

David Heffernan Points 292687

Quelque part ailleurs dans votre code, vous avez quelque chose qui ressemble à ceci :

 round = 42

Puis quand tu écris

 round((a/b)*0.9*c)

cela est interprété comme signifiant un appel de fonction sur l'objet lié à round , qui est un int . Et cela échoue.

Le problème est quel que soit le code qui lie un int au nom round . Trouvez-le et supprimez-le.

16voto

Tomate Points 135

J'ai eu la même erreur (TypeError: l'objet 'int' n'est pas appelable)

 def xlim(i,k,s1,s2):
   x=i/(2*k)
   xl=x*(1-s2*x-s1*(1-x)) / (1-s2*x**2-2*s1*x(1-x))
   return xl 
... ... ... ... 

>>> xlim(1,100,0,0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in xlim
TypeError: 'int' object is not callable

après avoir lu ce post j'ai réalisé que j'avais oublié un signe de multiplication * donc

 def xlim(i,k,s1,s2):
   x=i/(2*k)
   xl=x*(1-s2*x-s1*(1-x)) / (1-s2*x**2-2*s1*x * (1-x))
   return xl 

xlim(1.0,100.0,0.0,0.0)
0.005

réservoirs

5voto

Arrêtez de piétiner round ailleurs en lui liant un int .

2voto

Jonathan Arias Points 244

Dans mon cas j'ai changé :

 return <variable>

avec:

 return str(<variable>)

essayez avec ce qui suit et cela doit fonctionner:

 str(round((a/b)*0.9*c))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X