2015-05-18 49 views
2

我已經寫如果相等,誤差比較這代碼:類型錯誤:NoneType,可以當大於

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滿足l之間輸出所述整數/ N =具有6個重複位。如果我在第二循環中改變子句:

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

我期望得到滿足1-2 1之間的整數/ N = 6個或更多的重複數字,而是,我得到一個錯誤,告訴我有一個類型錯誤。我已經在所有輸出中嘗試了抹灰int()函數,但似乎我不允許將輸出作爲任何東西,但確切地等於一個值。

+0

它適合我!第二個子句輸出17,19 - 我正在使用anaconda(python 2.7.9) – farhawa

+0

請注意,'None'可以與python2.7中的int進行比較 - 但結果是依賴於實現的IIRC。 – mgilson

+0

奇怪的是,它將在不同的版本中工作...問題源於reclen()輸出「無」似乎?當定義reclen()時,我可以這樣寫: def reclen(n): 對於i在範圍內(1,n + 1): if(10 ** i)%n == 1: return(i) return(0) 並且代碼將返回17,19,如在此實現中所預期的那樣。**我無法編輯回覆以正確顯示代碼 – Jokkeyo

回答

1

nreclen1的情況下,會有什麼你for循環遍歷所以它返回None。例如: -

>>> 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() 
相關問題