2015-04-13 45 views
-1

所以我正在寫一個is_prime函數,並且當我將參數設置爲一個float時,它會一直返回一個TypeError。如果num爲素數,則函數返回True。如果X只能被1和X整除,則數字X爲素數。可以認爲數字0和1是素數,如果num不是素數,則返回False。另外,如果參數不是整數或數字< 0,該函數應該返回None。我的素數函數保持返回一個TypeError

所以例子:

  • 對於輸入參數「你好!」,應該返回None,因爲輸入參數是一個字符串
  • 對於輸入參數「23」,它應該返回None,因爲輸入參數是一個字符串
  • 對於輸入參數12.34,它應該返回None,因爲輸入參數是一個float。
  • 對於輸入參數1,它應該返回True
  • 對於輸入參數4,它應該返回False(數字4能被2整除)

所以這裏是我的代碼,我真的不知道什麼問題,任何幫助或批評將不勝感激......:

def is_prime(num): 
    if num is type(num) and type(str) and num < 0: 
     return None 
    for i in range(1, num): 
     if num % 2 == 0: 
      return False 
     else: 
      return True 

回答

1

基於您的代碼,我相信這是你要的算法:

  1. 檢查NUM爲整數(也應該檢查它是積極的)
  2. 檢查每個數字之間的1 &數字,看看它是否分數num
  3. 如果沒有數字除以num然後才返回true。

與所有的,該函數變爲:

def is_prime(num): 
    # returns false if num is not an integer 
    if not isinstance(num, int): 
     return None 
    # returns false is divisible by any number 
    # between 1 and num return False 
    for i in range(2, num): 
     if num % i == 0: 
      return False 
    # if none of the numbers divide num return True 
    return True. 
0

您的語法驗證變量類型是不正確的。要檢查你應該例如使用類型

if not isinstance(num, int): 
    return None 
else: 
    # check for prime 
+0

它仍然返回類型錯誤:預期範圍()整數端參數,得到了浮動。 (1,num):「 – Dom

+0

你應該只允許ints通過你的函數,其他的都應該返回None。看我的編輯。 – CoryKramer

+0

仍然返回相同的浮點問題「它仍然返回一個」TypeError:range()整數結束參數預計,得到浮動。在行上「for i in range(1,num): – Dom