2017-03-29 59 views
-2

我奮力調試下面的代碼,它拋出一個ZeroDivisionError解決模/分工有點難看,因爲我在添加if和abs()語句之前得到了這個錯誤。如何通過零誤差在python

我按照我的學校要求使用python 3.6,任務是使用過濾器返回int num的因子。

+0

它不是'num'需要非零;它是'x'。另外,這不是你如何使用'範圍'。請給我 – TigerhawkT3

+4

[mcve]。您發佈的代碼有語法錯誤,完全無法運行,即使語法修復也不會產生ZeroDivisionError。 – user2357112

+0

謝謝,我應該在發佈前做好更好的調試。今天我一直在抨擊我的頭靠在牆上。 – squalor

回答

-2

由於您定義的range()方式,您的代碼返回此錯誤。

正確的方式來定義在python範圍如下:

range(start, stop, step) 

如果你的情況下,你已經使用切片,這是造成你的程序拋出錯誤。

爲了您的程序,你需要定義一個函數是爲了回報由條件語句的東西,下面的代碼將解決您的問題

def fac(num): 
    if num > 0: 
     return list(filter(lambda x: num % x == 0, range(1, num+1))) 

print(fac(5)) # [1, 5] 

在這裏,我因爲在Python 3使用的列表函數內部過濾器和以上過濾器返回過濾器對象

+0

謝謝!代碼現在正在工作。 – squalor

+0

@squalor。我很高興我能夠提供幫助。我會很感激如果你可以標記這個答案有幫助。 –