Использование max () для функции, которая выдает список, возвращает 'int', который не вызывается - PullRequest
0 голосов
/ 16 марта 2020

Я решал вопрос, чтобы найти наибольший простой фактор данного числа. Мое решение:

def prime_factors(n):
    i = 2
    factors = []
    while i * i <= n:
        if n % i:
            i += 1
        else:
            n //= i
            factors.append(i)
    if n > 1:
        factors.append(n)
    return factors
max(prime_factors(600851475143))

Но я получаю эту ошибку:

TypeError                                 Traceback (most recent call last)
<ipython-input-41-97fe3113b3b1> in <module>
     11         factors.append(n)
     12     return factors
---> 13 max(prime_factors(600851475143))

TypeError: 'int' object is not callable

Я не могу понять, что я делаю не так?

1 Ответ

2 голосов
/ 16 марта 2020

Вы хотите использовать функцию max, но программа считает, что max является целочисленной переменной. Я полагаю, что вы присвоили int переменной max с именем где-то ранее в программе.

Чтобы устранить эту проблему, запустите приведенный ниже код перед вызовом функции max:

del max

Тогда это должно работать, потому что код удаляет переменную max. Кредиты для Ch3steR для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...