我写了这段代码:
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()函数,但似乎我不允许将输出比较为精确等于值的任何东西。
答案 0 :(得分:1)
如果n
中的1
为reclen
,则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()