0

私は以下を実行します。all_possible は、ファイルの先頭で [] に設定されています。

def a_combination(input):
global current_char
for y in range(0,len(str(typed))):
    working_int = int(list(str(input))[current_char])
    print working_int
    if (len(all_possible) == 0):
        all_possible.append(digits_all[working_int-2][0])
        all_possible.append(digits_all[working_int-2][1])
        all_possible.append(digits_all[working_int-2][2])
    else:
        for x in range(0, len(all_possible)):
            x = 3*x
##            Duplicate to setup 3 of the same words in the list
            all_possible.insert(x, all_possible[x])
            all_possible.insert(x, all_possible[x])
##            Now append the 1st possible character to the first version of the working string etc...
            all_possible[x] = all_possible[x]+digits_all[working_int-2][0]
            all_possible[x+1] = all_possible[x+1]+digits_all[working_int-2][1]
            all_possible[x+2] = all_possible[x+2]+digits_all[working_int-2][2]
##            Optimization - check after each stage for no-matches.
    current_char += 1

all_possible を印刷

    check_matches(all_possible)
print all_possible

def check_matches(input):
    output = []
    for possible_word in input[:]:
        for real_word in word_dictionary:
            if (normalise_word(real_word).startswith(possible_word)):
                output.append(possible_word)
            if (normalise_word(real_word) == possible_word):
                print possible_word, 'is a perfect match with the dictionary.'
    print output
    all_possible = output
    print all_possible
    return all_possible

問題は、a_combination で all_possible の値を返して設定しないことです。処理された値を check_matches に出力しますが、それを正しく返しません。つまり、a_combination は間違ったもの (normalise_word を通過する前のリスト) を出力します。何か案は?

サム

4

1 に答える 1

1

all_possiblefromの戻り値を保持しませんcheck_possible()。出力リストを関数内のローカル変数に割り当て、それを呼び出し元に返します。呼び出し元はそれを破棄します。やったほうがいい

all_possible = check_matches(all_possible)

また、グローバル変数の使用をやめるべきです。それらは混乱の原因です。変数は、それらが使用されている関数に対してローカルに保ち、別の名前を選択してください。

于 2012-11-30T11:00:54.400 に答える