TypeError: объект 'range' не может быть вызван без видимой причины - PullRequest
0 голосов
/ 04 февраля 2019

Я сделал код, чтобы сделать сводку чисел матрицы, но я получаю эту ошибку TypeError: объект range не вызывается, и я не знаю почему. Вот мой код:

print ('The summary of the positive and negative numbers of a matrix')
A=[[0 for i in range (col)] for j in range (fil)]
fil=int(input('Number of columns'))
col=int(input('Number of rows'))
auxp=0
auxn=0

for i in range (fil):
    for j in range (col):
        A[i][j]=int(input('Numbers of the matrix'))
for i in range (fil)(col):
    for j in range (fil):
        if (A[i][j]>0):
            auxp=aup+A[i][j]
        else:
            if (A[i][j]<0):
                auxn=auxn+A[i][j]
print ('The summary of the positive numbers is ',auxp)
print ('The summary of the negative numbers is ',auxn)

TypeError                                 Traceback (most recent call last)
<ipython-input-16-83bec8a1085e> in <module>
      9     for j in range (col):
     10         A[i][j]=int(input('Numbers of the matrix'))
---> 11 for i in range (fil)(col):
     12     for j in range (fil):
     13         if (A[i][j]>0):

TypeError: 'range' object is not callable

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Я думаю, что вы должны выполнять итерации по строкам и столбцам матрицы, как это делает ваш код в первом цикле for, например, так:

for i in range(fil):
    for j in range(col):
        if A[i][j] > 0:
            ...

Ваш код неверен, потому что он пытается вызватьrange объект:

>>> range(fil)
range(0, 10)
>>> type(range(fil))
<class 'range'>
>>> range(fil)(col)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'range' object is not callable

Таким образом, вызов range(fil) создает новый объект range, а затем Python пытается вызвать этот объект, как если бы это была функция, передавая colэто как аргумент.

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

0 голосов
/ 04 февраля 2019

Вы, вероятно, захотите изменить строку

for i in range (fil)(col):

на

for i in range (fil):

В том виде, как вы это сделали, это был вызов функции для объекта rangeи, как говорится в сообщении об ошибке, результат вызова range() нельзя использовать как вызываемую функцию / функцию.

...