Python, почему моя определенная функция, вывод которой является списком, продолжает получать ошибку нетипа - PullRequest
0 голосов
/ 29 июня 2019

Я определяю функцию, вывод которой состоит в печати списка.затем я хочу сравнить этот список с len (l2), который является некоторым другим списком в моем коде, но я продолжаю получать эту ошибку, что вывод моей определенной функции является NoneType, и его нельзя сравнить с целыми числами, как я могу решить эту проблему?Я новичок в программировании, поэтому, пожалуйста, ответьте просто

l = []
for i in range(0, 3):
    x = int(input())
    l.append(x)
def prime_counter(n):
    b = 1
    l1 = []
    while b <= n:
        k = 0
        if n % b == 0:
            j = 1
            while j <= b:
                if b % j == 0:
                    k = k + 1
                j = j + 1
            if k == 2:
                l1.append(b)
        b = b + 1
for i in range(0, len(l)):
    l2 = []
    if len(prime_counter(l[i])) > len(l2):
        l2.extend(prime_counter(l[i]))
print(l2)

1 Ответ

0 голосов
/ 29 июня 2019

Если в функции нет оператора return, None возвращается автоматически.Итак, вам нужно вернуть какой-то объект из функции, которую вызывающая функция может использовать в дальнейшем.

Это происходит в вашей prime_counter функции;вы должны вернуть список l1 из него, но вы не вернете ничего, что гарантировало бы len(None), что привело бы к ошибке, поскольку None singleton не имеет никакой длины, связанной с ним.

Вам необходимовернуть список l1 из prime_counter:

def prime_counter(n):
    b = 1
    l1 = []
    while b <= n:
        ...
        ...
    return l1
...