Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 代码在类中不起作用_Python_Class - Fatal编程技术网

Python 代码在类中不起作用

Python 代码在类中不起作用,python,class,Python,Class,我试图解一个由给定数的原始因式分解组成的练习 def primes(n): p=[] for a in range(2,n+1): if (is_prime(a)): p.append(a) return p def is_prime(number): for n in range(2,number): if not number%n : return False return True def factor(z):

我试图解一个由给定数的原始因式分解组成的练习

def primes(n):
    p=[]
    for a in range(2,n+1):
        if (is_prime(a)): p.append(a)
    return p

def is_prime(number):
    for n in range(2,number):
        if not number%n : return False
    return True

def factor(z):
    p=primes(z)
    fact={}
    if z in p:
        fact[z]=1
    else:
        for n in p:
            while z%n==0 and (z/n not in p):
                if n not in fact: fact[n]=1
                else: fact[n]+=1
                z/=n  
            if z%n==0 and (z/n in p):
                if n in fact: fact[n]+=1+(z/n==n)
                else:
                    fact[n]=1
                    fact[z/n]=1+(z/n==n)
                break


    return fact

print factor(13)
我的代码工作起来很有魅力;但是实习医生想让我把它放在一节课上,首先是:

class PrimeFactorizer:
    #your code here
使用
primefactoryzer(n)调用。factor

当我将上面的工作代码添加到

class PrimeFactorizer:
    def __init__(self, z):
        self.z=z
当调用
primefactoryzer(13)时,它返回一个空的东西
有人能告诉我我做错了什么吗?

谢谢

这应该可以做到:

class PrimeFactorizer:
    def __init__(self, z):
        self.z=z

    def primes(self,n):
        p=[]
        for a in range(2,n+1):
            if (self.is_prime(a)): p.append(a)
        return p

    def is_prime(self,number):
        for n in range(2,number):
            if not number%n : return False
        return True

    def factor(self):
        p=self.primes(self.z)
        fact={}
        if self.z in p:
            fact[self.z]=1
        else:
            for n in p:
                while self.z%n==0 and (self.z/n not in p):
                    if n not in fact: fact[n]=1
                    else: fact[n]+=1
                    self.z/=n
                if self.z%n==0 and (self.z/n in p):
                    if n in fact: fact[n]+=1+(self.z/n==n)
                    else:
                        fact[n]=1
                        fact[self.z/n]=1+(z/n==n)
                    break
        return fact

print PrimeFactorizer(8).factor() # Output: {2: 3}
print PrimeFactorizer(13).factor() # Output: {13: 1}}

这应该可以做到:

class PrimeFactorizer:
    def __init__(self, z):
        self.z=z

    def primes(self,n):
        p=[]
        for a in range(2,n+1):
            if (self.is_prime(a)): p.append(a)
        return p

    def is_prime(self,number):
        for n in range(2,number):
            if not number%n : return False
        return True

    def factor(self):
        p=self.primes(self.z)
        fact={}
        if self.z in p:
            fact[self.z]=1
        else:
            for n in p:
                while self.z%n==0 and (self.z/n not in p):
                    if n not in fact: fact[n]=1
                    else: fact[n]+=1
                    self.z/=n
                if self.z%n==0 and (self.z/n in p):
                    if n in fact: fact[n]+=1+(self.z/n==n)
                    else:
                        fact[n]=1
                        fact[self.z/n]=1+(z/n==n)
                    break
        return fact

print PrimeFactorizer(8).factor() # Output: {2: 3}
print PrimeFactorizer(13).factor() # Output: {13: 1}}

.factor
.factor()
?说明上说。factor tbh我真的不知道区别:在python文档
.factor
.factor()中预告
?说明中说。factor tbh我真的不知道区别:在python文档中,pRead about
class
,我无法通过说明中所说的测试。factor和not.factor()试图找出区别:p好的,您可以在init的末尾添加self.factor(),并将返回事实更改为打印事实。在这种情况下,您可以调用“PrimeFactorzer(13).factor”,它将打印{13:1}。但是当调用“PrimeFactorzer(13)”时,我会打印相同的内容。我无法按照说明通过测试。factor和not.factor()试图找出区别:pWell您可以将self.factor()添加到init的末尾,并将返回事实更改为打印事实。在这种情况下,您可以调用“PrimeFactorzer(13).factor”,它将打印{13:1}。但是当调用“PrimeFactoryzer(13)”时,我将打印相同的内容。