首页 > 解决方案 > Python为什么我定义的输出是列表的函数不断收到非类型错误

问题描述

我定义了一个函数,它的输出是打印一个列表。然后我想将该列表与 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)

标签: pythonlistfunctionnonetype

解决方案


当函数中没有任何return语句时,None会自动返回。因此,您需要从函数的调用者可以进一步使用的函数中返回一些对象。

这发生在您的prime_counter功能中;您应该从中返回l1列表,但您没有返回任何保证len(None),因为None单例没有任何与之关联的长度。

您需要从以下位置返回l1列表prime_counter

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

推荐阅读