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 aboutclass
,我无法通过说明中所说的测试。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)”时,我将打印相同的内容。