2014-07-01 5 views
0

это мой код, цель кода - принять два целых числа и создать list.start с номером, умножить его ненулевые цифры и добавить этот продукт к числу. Это новое число в последовательности. Повторите. Например: Начните с 12: умножьте цифры (1 * 2) и добавьте -> 14. Умножьте свои цифры (1 * 4) и добавьте -> 18, и так далее. Это остановится, когда он достигнет предела (кроме цифры происхождения). two integers 12,5(limit) and produce a list ['12','14','18','26','38','62'] Я проверил много раз, и я не знаю, почему я получаю TypeError: объект «int» не подлежит подписке. может ли кто-то проследить за мной? :)TypeError: объект 'int' не подлежит подписке - python, coldn't узнать почему?

def check_n(n,p,p1,old_t,new_t,fn1,t,limit): 
    if len(new_t) - 1 != limit: 
     if n != "": 
      if int(n[0]) != 0: 
       p = p*int(n[0]) 
       t = p + fn1 
       return check_n(n[1:],p,p1,old_t,new_t,fn1,t,limit) 
      else: 
       return check_n(n[1:],p,p1,old_t,new_t,fn1,t,limit) 
     else: 
      pl = p1 + "," + str(t) 
      old_t = str(fn1) + p1 
      new_t = old_t.split(',') 
      return check_n(t,p,p1,old_t,new_t,fn1,t,limit) 
    else: 
     return new_t 
def in_both_sequences(n,limit): 
    fn1 = n 
    n = str(n) 
    p = 1 
    p1 = "" 
    old_t = [] 
    new_t = [] 
    t = 0 
    return check_n(n,p,p1,old_t,new_t,fn1,t,limit) 

ответ

1

В функции check_n n должна быть строкой. Но когда check_n называет себя в нижней части

return check_n(t,p,p1,old_t,new_t,fn1,t,limit) 

вы проходите в t, являющемся целым числом.

0

Я не смог воспроизвести ту же ошибку. Но я изменил подход, и это получает список, который вы хотите

def check_n(base, limit): 
    result_list = [str(base)] 

    # Build the list to the limit 
    for x in range(0, limit): 

     # Pull the latest number 
     str_base = result_list[len(result_list) - 1] 

     # Multiply non-zero digits of the str_base 
     prod = int(str_base[0]) 
     for y in range(1, len(str_base)): 
      if int(str_base[y]) != 0: 
       prod = prod * int(str_base[y]) 

     prod += int(str_base) 

     result_list.append(str(prod)) 

    return result_list 
Смежные вопросы