2017-01-02 14 views
0

パターン認識装置を作っていて、非常に奇妙なエラーが発生しました。パターンが認識されると、["x", "x", "2"]が出力され、i変数がtに設定されます。私はプリントアウトしたときにでもPython変数が変わってしまいました

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) 

(__________#重要_____________コードの一部は、#をマーク参照)、それは["x", "x", "x"]

を出力し、最後の行に感謝を働きました。

+0

31行目:numList = [a for a num] TypeError: 'int'オブジェクトは反復可能ではありません –

+0

これで、数値に対してstr()を呼び出し、1を "1"に変更します。投稿の更新、返信ありがとうございますが、私は何のエラーも受け取りません – XCode

+0

コードを読むのが難しいですが、どうしたらいいですか?あなたは入力と期待される出力のいくつかの例を挙げることができますか? – fafl

答えて

0

私は自分の答えを見つけました。問題は、私がリストをクローン化せず、代わりにそれを上書きしたということでした。 polkuに感謝しました。みんな、ありがとう。

関連する問題