2016-10-02 68 views
1

我对代码厨师提出了一个问题,要求编辑距离的修改版本,它是编辑2个数字之间的距离,只允许删除操作和删除成本=删除数量。编辑编号距离特定实施。 PYTHON

所以我试图在python上实现。但是,让

TypeError: 'function' object has no attribute '__getitem__' 

我在EditDisRec功能

这里得到这个错误在最后一行即回线是代码

def ISTHERE(x,y): 
    a=len(str(y)) 
    b=y 
    for i in range(0,a): 
     if b%10 == x: 
      return(True) 
      break 
     else: 
      b=b/10 
    return(False)    


def sum_digits(N): 
    n=int(N) 
    s = 0 
    while n: 
     s += n % 10 
     n //= 10 
    return s 
def delt(x,y): 
    if int(x)==int(y): 
     return 0 
    else: 
     return int(x)+int(y) 

def EditDistRec(S,T): 
    if S==0: 
     return sum_digits(T) 
    elif T==0: 
     return sum_digits(S) 
    elif (S==1 or S==2 or S==3 or S==4 or S==5 or S==6 or S==7 or S==8 or S==9): 
     if ISTHERE(S,T)==True : 
      return sum_digits(T) - S 
     elif ISTHERE(S,T)==False: 
      return sum_digits(T) 
    elif (T==1 or T==2 or T==3 or T==4 or T==5 or T==6 or T==7 or T==8 or T==9): 
     if ISTHERE(T,S)==True : 
      return sum_digits(S) - T 
     elif ISTHERE(T,S)==False: 
      return sum_digits(S) 


    return min(EditDistRec(S/10,T/10) + delt[S%10,T%10],(EditDistRec(S ,T/10) + int(T%10)),(EditDistRec(S/10,T) + int(S%10))) 


print(EditDistRec(7315,713)) 
+1

请提供完整的追踪和[MCVE。看到[问] –

回答

1

你在这里delt[S%10,T%10]

这意味着错字您不能将它们索引为列表,因为getitem是处理此操作的方法。 delt是一个函数,而不是一个列表

更正:

return min(EditDistRec(S/10,T/10) + delt(S%10,T%10),(EditDistRec(S ,T/10) + int(T%10)),(EditDistRec(S/10,T) + int(S%10))) 

输出:

sh-4.3$ python main.py                
7 
sh-4.3$ 
+0

哦,男人非常感谢..我被困在这一点..哦。傻一个 –

+0

很高兴。如果你的问题得到解决,你会介意接受答案,或者你需要任何进一步的帮助。 – Cyclotron3x3