2014-02-07 40 views
0

我想通過編寫一個簡單的程序來測試一個數字是否爲素數來教自己python。在我看來,代碼應該可以工作,但是當我運行它時,我並沒有被要求輸入一個數字,即使我正在使用raw_input(),就像它在這裏所說的那樣,Python: user input and commandline arguments。我應該怎麼做才能解決這個問題?Python程序不要求輸入

class PrimeTester: 

    def primeTest(number): 
     if number == 2: 
      print("prime") 

     if number % 2 == 0: 
      print("not prime") 

     highesttestnum = number ** 0.5 + 1 
     count = 3 
     while count <= highesttestnum: 
      if number % count == 0: 
       print("not prime") 
      count += 2 

     print("prime") 

    def __init__(self): 
     x = int(raw_input('Input a number to test if prime:')) 
     print("The number " + x + " " + primeTest(x)) 
+3

你在哪裏初始化'PrimeTester'的實例? – Blender

+1

更重要的是:你爲什麼要在這裏上課? – Matthias

+0

我建議如果你打算在這裏使用一個類,你將number_to_test作爲參數傳遞給構造函數。 –

回答

1
class PrimeTester: 
    def __init__(self): 
     x = int(raw_input('Input a number to test if prime:')) 
     result = self.primeTest(x) 
     print("The number " + str(x) + " is " + result) 


    def primeTest(self, number): 
     if number == 2: 
      result = "prime" 

     if number % 2 == 0: 
      result = "not prime" 

     highesttestnum = number ** 0.5 + 1 
     count = 3 
     while count <= highesttestnum: 
      if number % count == 0: 
       result = "not prime" 
      count += 2 

      result= "prime" 

     return result 

if __name__ == '__main__': 
    obj = PrimeTester() 

當你在另一個使用'self'中引用當前對象的方法中調用時。 請閱讀python文檔。 http://docs.python.org/2/tutorial/classes.html

打印時,必須將整數值轉換爲字符串以連接它們。
並嘗試從方法中返回一些東西,而不是打印更pythonic。

1

您需要在代碼之後創建此類的對象。

x = PrimeTester() 

您也可以在函數中創建對象,然後調用此函數。