2017-01-02 6 views
0

Я создаю распознаватель паттернов, и я столкнулся с ОЧЕНЬ странной ошибкой. Если шаблон распознан, он выводит ["x", "x", "2"], и я устанавливаю переменную, обработанную t. Но когда я распечатать работал на последней строке он печатает ["x", "x", "x"]Python variable действующий weird

(см часть кода с пометкой # _____________ ВАЖНОЕ __________ #)

import random 

    def check_pattern(pattern, rule): 
     for i, RULE in enumerate(pattern): 
      if RULE != "x": 
       if rule[i] != RULE: 
        return False 
     return True 

    if __name__ == "__main__": 
     numbers = [002,212,212,432,132,142,322,992,972,692,942,472] 

     #numbers = [a.replace("\n", "") for a in numbers] 

     print("Finding pattern in {}".format(numbers)) 

     patterns = [] 
     possible = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "x"] 

     found = False 
     pattern = ["x", "x", "x"] 
     working = [] 
     worked = [] 
     for i, rule in enumerate(pattern): 
      for attemptRule in possible: 
       testRule = pattern 
       testRule[i] = str(attemptRule) 
       works = True 

       for num in numbers: 
        numList = [a for a in str(num)] 
        if check_pattern(testRule, numList): 
         pass 
         #print("Pattern {} works with {}".format(t, numList)) 
        else: 
         works = False 
         #print("Pattern {} doesnt work with {}".format(t, numList)) 
       if works: 
        # ____________________ IMPORTANT ______________________ # 
        if testRule != ['x', 'x', 'x']: 
         print(testRule)      
         worked = testRule 
        # ____________________ IMPORTANT ______________________ # 
        working.append(testRule) 
     #print("Pattern {} works".format(working)) 
    print(worked) 

Спасибо.

+0

В строке 31: numList = [a для a в num] ТипError: объект 'int' не является итерабельным –

+0

Теперь я вызываю str() для чисел и меняю 1 на «1» и так далее. Обновление сообщения, спасибо за ответ, но я не получаю никаких ошибок – XCode

+0

Мне трудно читать код, что он должен делать? Можете ли вы привести несколько примеров ввода и ожидаемого результата? – fafl

ответ

0

Я нашел свой ответ. Проблема заключалась в том, что я не клонировал список и не переписывал его. Благодаря полку я понял. Всем спасибо.