TypeError:NoneType,如果相等则可以比较,大于

时间:2015-05-18 21:34:50

标签: python function compare

我写了这段代码:

def reclen(n):
    for i in range(1,n):
        if (10**i)%n==1:
            return(i)

for j in range(1,20):
    if reclen(j)==6:
        print(j)

它会运行,输出1-20之间的整数,满足1 / n =有6个重复数字。如果我将第二个循环中的子句更改为:

for j in range(1,20):
    if reclen(j)>6:
        print(j)

我希望得到1-2之间的整数满足1 / n =有6个或更多的重复数字,但相反,我得到一个错误,告诉我有一个类型错误。我尝试在所有输出中抹灰int()函数,但似乎我不允许将输出比较为精确等于值的任何东西。

1 个答案:

答案 0 :(得分:1)

如果n中的1reclen,则for循环将无法迭代,因此返回None。 e.g:

>>> def reclen(n):
...     for i in range(1,n):
...         if (10**i)%n==1:
...             return(i)
... 
>>> print(reclen(1))
None

None既不大于也不小于任何整数(在python3.x上,默认情况下不允许比较不同类型),这就是你得到错误的原因。

>>> None > 6
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unorderable types: NoneType() > int()