TypeError: ‘int’ object kan niet worden aangeroepen

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 intis. En dat mislukt.

Het probleem is welke code dan ook een intbindt 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 roundte stampen door er een intaan 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

  1. 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!!

  1. 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 )

Other episodes