Gezien de volgende gehele getallen en berekening
from __future__ import division
a = 23
b = 45
c = 16
round((a/b)*0.9*c)
Dit resulteert in:
TypeError: 'int' object is not callable.
Hoe kan ik de uitvoer afronden op een geheel getal?
Antwoord 1, autoriteit 100%
Ergens anders in je code heb je iets dat er zo uitziet:
round = 42
Als je dan schrijft
round((a/b)*0.9*c)
dat wordt geïnterpreteerd als een functieaanroep op het object dat is gebonden aan round
, wat een int
is. En dat mislukt.
Het probleem is welke code dan ook een int
bindt aan de naam round
. Zoek dat op en verwijder het.
Antwoord 2, autoriteit 5%
Ik kreeg dezelfde fout (TypeError: ‘int’ object kan niet worden aangeroepen)
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
na het lezen van dit bericht realiseerde ik me dat ik een vermenigvuldigingsteken * dus vergeten was
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
tanks
Antwoord 3, autoriteit 3%
Stop met ergens anders op round
te stampen door er een int
aan te binden.
Antwoord 4, autoriteit 2%
In mijn geval heb ik het volgende gewijzigd:
return <variable>
met:
return str(<variable>)
probeer het volgende en het moet werken:
str(round((a/b)*0.9*c))
Antwoord 5
Ik had ook te maken met dit probleem, maar in een iets ander scenario.
Scenario:
param = 1
def param():
.....
def func():
if param:
var = {passing a dict here}
param(var)
Het ziet er hier eenvoudig en een stomme fout uit, maar door meerdere regels codes in de eigenlijke code, duurde het even voordat ik erachter kwam dat de variabelenaam die ik gebruikte hetzelfde was als mijn functienaam, waardoor ik kreeg deze fout.
Functienaam gewijzigd in iets anders en het werkte.
Dus, volgens wat ik begreep, betekent deze fout dat je een geheel getal probeert te gebruiken als een functie of in eenvoudiger bewoordingen, de aangeroepen functienaam wordt ook ergens in de code als een geheel getal gebruikt.
Probeer dus alle voorkomens van de aangeroepen functienaam te achterhalen en kijk of die ergens als een geheel getal wordt gebruikt.
Ik vond het moeilijk om dit te vinden, dus deel het hier zodat iemand anders zijn tijd kan besparen, voor het geval ze met dit probleem te maken krijgen.
Antwoord 6
Soms is het probleem een operator te vergeten tijdens de berekening.
Voorbeeld:
print(n-(-1+(math.sqrt(1-4(2*(-n))))/2))
liever
het moet zijn
print(n-(-1+(math.sqrt(1-4*(2*(-n))))/2))
HTH
Antwoord 7
Zoals gezegd heb je misschien een variabele met de naam round (van het type int
) in je code en als je die verwijdert, zou de fout moeten verdwijnen. Voor Jupyter-notebooks is het echter mogelijk dat het eenvoudigweg wissen van een cel of het verwijderen van de variabele de variabele niet buiten het bereik haalt. In dat geval kunt u uw notebook opnieuw opstarten om opnieuw te beginnen nadat u de variabele hebt verwijderd.
Antwoord 8
Er zijn twee redenen voor deze fout “TypeError: ‘int’ object kan niet worden aangeroepen“
- Functie heeft een geheel getal
Overweeg
a = [5, 10, 15, 20]
max = 0
max = max(a)
print(max)
Hierdoor ontstaat TypeError: ‘int’ object kan niet worden aangeroepen.
Verander gewoon de variabelenaam “max” in var(say).
a = [5, 10, 15, 20]
var = 0
var = max(a)
print(var)
De bovenstaande code werkt perfect zonder fouten!!
- Er ontbreekt een wiskundige operator
Overweeg
a = 5
b = a(a+1)
print(b)
Dit zal ook TypeError produceren: ‘int’ object kan niet worden aangeroepen.
Misschien bent u vergeten de operator ertussen te zetten ( ‘*’ in dit geval )