2012-03-19 13 views
28

dato i seguenti numeri interi e calcoloTypeError: oggetto 'int' non è richiamabile

from __future__ import division 

a = 23 
b = 45 
c = 16 

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

Ne risultano:

TypeError: 'int' object is not callable. 

Come posso arrotondare l'uscita di un intero?

+3

Funziona correttamente con Python 2.7 e 2.4. – Fabian

+2

Penso che il tuo problema sia da qualche altra parte rispetto al codice mostrato. – Mizipzor

+0

2.7, non era a conoscenza del fatto che si tratta di un problema con un nome int rotondo. – rob

risposta

87

Da qualche altra parte nel codice si ha qualcosa che assomiglia a questo:

round = 42 

Poi, quando si scrive

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

che viene interpretata nel senso di una chiamata di funzione per l'oggetto legato a round, che è un int. E questo fallisce.

Il problema è qualunque sia il codice che lega un int al nome round. Trovalo e rimuovilo.

+13

per farla breve: non nominare una var e una funzione uguali. – Timo

+0

@David Heffernan ringrazia! –

+1

Ah il vecchio problema 'false = true'. Anche questo mi ha catturato. python è un'amante difficile (e sdrucciolevole). –

4

Arrestare stomping su round altrove legando un int ad esso.

+1

grazie! Avrei cercato per ore -.- – rob

0

ho ottenuto lo stesso errore

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 

dopo leggere questo post mi rendo conto che ho dimenticato una moltiplicazione * così

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 

serbatoi

+1

In realtà era un problema diverso. Vedi la risposta accettata. –

+1

So che è stato tanto tempo fa, ma questa risposta in realtà ha risolto il mio problema. Vota da me – Pythogen

0

So che questa non è una risposta, ma un consigli. Se usi Eclipse con il plugin Pydev per codificare python, mostrerà un avviso ogni volta che usi un simbolo incorporato come nome della variabile.

Problemi correlati