Ошибка типа: объект ‘int’ не может быть вызван

#python #loops #integer

Вопрос:

Учитывая следующие целые числа и вычисления

 from __future__ import division

a = 23
b = 45
c = 16

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

Это приводит к:

 TypeError: 'int' object is not callable.
 

Как я могу округлить выходные данные до целого числа?

Комментарии:

1. Он отлично работает под Python 2.7 и 2.4.

2. Я думаю, что ваша проблема где-то в другом месте, а не в показанном коде.

3. 2.7, не знал, что это проблема с именем int с именем round.

Ответ №1:

Где-то еще в вашем коде есть что-то, что выглядит так:

 round = 42
 

Затем, когда вы напишете

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

это интерпретируется как означающий вызов функции для объекта , к которому привязан round , который является int . И это не удается.

Проблема в том, какой код привязывает an int к имени round . Найдите это и удалите.

Комментарии:

1. короче говоря, не называйте var и функцию равными.

2. Ах, старая false = true проблема. Этот тоже меня зацепил. питон-хитрая (и скользкая) хозяйка.

Ответ №2:

Я получил ту же ошибку (ошибка типа: объект ‘int’ не вызывается)

 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
 

прочитав этот пост, я понял, что забыл знак умножения * так что

 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
 

танки

Комментарии:

1. На самом деле это была совсем другая проблема. Смотрите принятый ответ.

2. Я знаю, что это было давно, но этот ответ фактически решил мою проблему. Проголосуйте за меня

3. Для меня это должно было быть ответом. Это решило мою проблему.

Ответ №3:

Перестаньте топтаться round где-то в другом месте, привязав int к нему ан.

Ответ №4:

В моем случае я изменился:

 return <variable>
 

с:

 return str(<variable>)
 

попробуйте сделать следующее, и это должно сработать:

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

Ответ №5:

Я также сталкивался с этой проблемой, но в несколько ином сценарии.

Сценарий:

 param = 1

def param():
    .....
def func():
    if param:
        var = {passing a dict here}
        param(var)
 

Здесь это выглядит простой и глупой ошибкой, но из-за нескольких строк кода в реальном коде мне потребовалось некоторое время, чтобы понять, что имя переменной, которое я использовал, совпадало с именем моей функции, из-за которого я получал эту ошибку.

Изменил имя функции на что-то другое, и это сработало.

Итак, в основном, согласно тому, что я понял, эта ошибка означает, что вы пытаетесь использовать целое число в качестве функции или, проще говоря, имя вызываемой функции также используется в качестве целого числа где-то в коде. Итак, просто попробуйте выяснить все вхождения имени вызываемой функции и посмотрите, используется ли оно где-нибудь в качестве целого числа.

Я изо всех сил пытался найти это, поэтому поделился этим здесь, чтобы кто-то другой мог сэкономить свое время, в случае, если они столкнутся с этой проблемой.

Ответ №6:

Иногда проблема заключалась бы в том, чтобы забыть оператора во время вычисления.
Пример:
print(n-(-1 (math.sqrt(1-4(2*(-n))))/2)) скорее
это должно быть
print(n-(-1 (math.sqrt(1-4*(2*(-n))))/2))

ХТХ

Ответ №7:

Как уже упоминалось, в вашем коде может быть переменная с именем round (типа int ), удаление которой должно устранить ошибку. Однако для записных книжек Jupyter простое удаление ячейки или ее удаление может не вывести переменную из области видимости. В таком случае вы можете перезапустить свой ноутбук, чтобы начать все заново после удаления переменной.

Ответ №8:

Существует две причины этой ошибки «Ошибка типа: объект ‘int’ не может быть вызван»

  1. Функция Имеет Целочисленное значение

Считать

 a = [5, 10, 15, 20]
max = 0
max = max(a)
print(max)
 

Это приведет к ошибке типа: объект ‘int’ не может быть вызван.

Просто измените имя переменной «max» на var(скажем).

 a = [5, 10, 15, 20]
var = 0
var = max(a)
print(var)
 

Приведенный выше код будет работать идеально без каких-либо ошибок!!

  1. Отсутствует математический оператор

Считать

 a = 5
b = a(a 1)
print(b)
 

Это также приведет к ошибке типа: объект ‘int’ не может быть вызван.

Возможно, вы забыли поместить оператор между (в данном случае»*»)

Ответ №9:

Вы всегда можете использовать приведенный ниже метод для устранения неоднозначности функции.

 __import__('__builtin__').round((a/b)*0.9*c)
 

__builtin__ это имя модуля для всех встроенных функций, таких как round, min, max и т.д. Используйте соответствующее имя модуля для функций из других модулей.