1

いくつかのグラフがあり、それらからコードを生成します。1 つのノードから 1 つの条件。たとえば、生成されたコードは次のようになります。

def function():
    steps = []

    if True:
        steps.append(1)

        if True:
            steps.append(2)

            if False:
                steps.append(3)
                return 'a', steps

            if False:
                steps.append(4)
                return 'b', steps


        if True:
            steps.append(5)

            if True:
                steps.append(6)

                if False:
                    steps.append(7)
                    return 'a', steps
            if True:
                steps.append(8)
                return 'b', steps

True例をわかりやすくするために、実際の条件を/に置き換えましFalseた。

この関数は tuple('b', [1, 2, 5, 6, 8])を返すので、いくつかの値とステップが実行されます。このコードを変更して、成功しなかったステップを削除したいと思います。したがって、変更後、関数は を返す必要があり('b', [1, 5, 8])ます。

私の質問は、これを行うための最良の方法は何ですか?

4

1 に答える 1

3

これを行う1つの方法は、pop失敗したすべてのグループの後で行うことです。

def function():
    steps = []

    if True:
        steps.append(1)

        if True:
            steps.append(2)

            if False:
                steps.append(3)
                return 'a', steps

            if False:
                steps.append(4)
                return 'b', steps

            steps.pop() #removes 2 from steps

        if True:
            steps.append(5)

            if True:
                steps.append(6)

                if False:
                    steps.append(7)
                    return 'a', steps

            steps.pop() #remove the 6

            if True:
                steps.append(8)
                return 'b', steps

        steps.pop() #remove the 5
    steps.pop() # removes the 1
于 2012-09-05T13:55:59.183 に答える