Ошибка типа: объект ‘list’ не вызывается, максимальное попарное произведение

#python #pythomnic3k

#python #pythomnic3k

Вопрос:

когда я запускаю эту функцию, я получаю эту ошибку, я не знаю, в чем проблема?

 def max_product(number):
    n = len(number)
    indexMax1 = 0
    indexMax2 = 0
    for f in range(n):
        if f > number[indexMax1]:
            indexMax1 = number.index(f)
    for s in range(n):
        if(s > number[indexMax2] and indexMax2 != indexMax1):
            indexMax2 = number.index(s)
    return number(indexMax2)*number(indexMax1)
 

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

1. число (indexMax2)* число (indexMax1) должно быть с [], а не с ()

2. Предполагая, что number является списком, номер вызова (indexMax2) должен содержать квадратные скобки

Ответ №1:

Похоже, ошибка в последней строке

 return number(indexMax2)*number(indexMax1)
 

Вы пытаетесь вызвать number(indexMax2) и number(indexMax1). Я думаю, что вы хотели сделать, это умножить элементы числа на индексы indexMax2 и indexMax1. Вам нужно изменить скобки на квадратные скобки:

 return number[indexMax2]*number[indexMax1]
 

Пожалуйста, укажите типы входных переменных в ваших будущих вопросах.

Ответ №2:

 def max_product(number):
    n = len(number)
    indexMax1 = 0
    indexMax2 = 0
    for f in range(n):
        if f > number[indexMax1]:
            indexMax1 = number.index(f)
    for s in range(n):
        if(s > number[indexMax2] and indexMax2 != indexMax1):
            indexMax2 = number.index(s)
    return number[indexMax2]*number[indexMax1]
 

Ответ №3:

Как заявил Лиор Коэн в своем комментарии, это всего лишь вопрос круглых скобок вместо скобок. Правильный код:

 def max_product(number):
    n = len(number)
    indexMax1 = 0
    indexMax2 = 0
    for f in range(n):
        if f > number[indexMax1]:
            indexMax1 = number.index(f)
    for s in range(n):
        if(s > number[indexMax2] and indexMax2 != indexMax1):
            indexMax2 = number.index(s)
    return number[indexMax2]*number[indexMax1]