2012-03-19 5 views
28

Compte tenu des entiers suivants et calculTypeError: « int » objet n'est pas appelable

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?

+3

Cela fonctionne très bien sous Python 2.7 et 2.4. – Fabian

+2

Je pense que votre problème est ailleurs que dans le code affiché. – Mizipzor

+0

2.7, n'était pas au courant que c'est un problème d'avoir un rond nommé int. – rob

Répondre

87

Quelque part d'autre dans votre code que vous avez quelque chose qui ressemble à ceci:

round = 42 

Ensuite, lorsque vous écrivez

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

qui est interprété comme signifiant un appel de fonction sur l'objet lié à round, qui est un int. Et ça échoue. Le problème est quel que soit le code lie int au nom round. Trouvez-le et supprimez-le.

+13

pour faire une longue histoire courte: ne nomme pas un var et une fonction égale. – Timo

+0

@David Heffernan merci! –

+1

Ah l'ancien problème 'false = true'. Celui-ci m'a attrapé aussi. python est une maîtresse délicate (et glissante). –

4

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

+1

merci beaucoup! J'aurais cherché des heures -.- – rob

0

j'ai eu la même erreur

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 lu ce post, je me rends compte que j'ai oublié une 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

+1

C'était en fait un problème différent. Voir la réponse acceptée. –

+1

Je sais que c'était il y a longtemps, mais cette réponse a effectivement résolu mon problème. Votez de moi – Pythogen

0

Je sais que ce n'est pas une réponse, mais une Conseil. Si vous utilisez Eclipse avec le plugin Pydev pour coder python, il affichera un avertissement chaque fois que vous utiliserez un symbole intégré comme nom de variable.

Questions connexes