2017-08-06 72 views
0

如果n以外的因子总和为n,程序需要返回true。我需要在运行时使用函数名称。当我输入我的程序显示意外的令牌错误。为什么?

factors(45) 

它显示有一个未解决的标记错误。请检查程序有什么问题。

def factors(n):#unexpected token error 
factorlist = [] 
for i in range(1,n): 
    if n%i == 0: 
    factorlist = factorlist + [i] 
return(factorlist) 
def perfect(n): 
if sum(factorlist) == n: 
    return(True) 
else : 
    return(False) 
+0

'factorlist'不'完美的(N)'函数引用。可能你想要'factorlist = factors(n)'? – Tushar

+0

可以在程序中进行修正。我无法得到它。我刚开始学习python。请 –

+0

'45'不是完美的号码。所以,它返回'False'。 –

回答

1

你不叫factors(n)perfect(n)功能。所以,你必须使用 factorlist = factors(n)进入perfect(n)函数。

,然后尝试这样:

def factors(n): 
    factorlist = [] 
    for i in range(1, n): 
    if n % i == 0: 
     factorlist = factorlist + [i] 
    return (factorlist) 


def perfect(n): 
    factorlist = factors(n) # use this line 
    if sum(factorlist) == n: 
    return (True) 
    else: 
    return (False) 

print(perfect(45)) # Ouput : False 
+0

同样的错误显示出来 –

+0

复制我的代码并在编译器中运行。我认为,这段代码是正确的,没有错误。 –

0

尝试:

def factors(n): 
    factorlist = [] 
    for i in range(1,n): 
     if n%i == 0: 
      factorlist = factorlist + [i] 
    print factorlist 
    return factorlist 

def perfect(n): 
    factorlist = factors(n) 
    if sum(factorlist) == n: 
     return True 
    else : 
     return False 

n = int(raw_input('Enter the number: ')) 
print(perfect(n)) 

输出:

enter image description here

+0

它没有工作。同样的错误,如何在函数中使用参数? –

+1

@ Benetha,我的和Md。Rezwanul Haque的答案正在工作并给出结果,请再试一次。或者发布你正在尝试的确切错误和代码。 –

+0

我需要输入的数字是什么总和必须在运行时间内计算。我应该如何更改打印命令 –