2

Pythonファイルのコードが無限ループを通過するかどうかを識別する関数を作成しようとしています。これは私がこれまでに持っているものです:

def reader(filename):
    myfile = open(filename)
    counter = 0 
    #counters the number of lines in the file
    for line in myfile:
        counter +=1
        print line
    #print number of lines in file    
    print counter

    #execute the code in file        
    execution = execfile(filename)

私がやろうとしているのは、ファイルを実行することです。おそらく、実行された行数を数えて、それを前のカウンターの数値と比較してみてください。たとえば、counter > lines_exected の場合に True を返すと、コードに無限ループが発生します。これは機能しますか?それとも、何か他のことを試す必要がありますか?

4

2 に答える 2

8

不可能だよ。停止問題を読んでください。

また、理論上は可能だったとしても、あるいは何らかのヒューリスティックな推測をしたいだけであっても、ファイルを実行するだけでは明らかに不可能です。プログラムに無限ループがある場合、無限ループを実行してスタックするため、カウンターを確認する機会がありません。

于 2013-12-23T00:51:32.007 に答える
0

一般的なケースでは、これは単純に実行できません。明らかに無限ループ ( ) である特定の単純なケースを特定できる場合がwhile True:あり、それを行う静的解析ツールがありますが、一般に、しようとしていることを実行する方法はありません。

于 2013-12-23T00:54:29.993 に答える