2014-02-07 38 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() 

您也可以在函数中创建对象,然后调用此函数。