このコードの抜粋をデバッグできません。実際には作者が望んでいるものを返さないという事実を気にしないでください。私はすでに説明しましたが、私の質問は異なります。
def factors(n):
result = []
for x in xrange(2,n):
print "\t%i,foo" % x
if n % x == 0:
isPrime = True
print "\t\t%i,bar" % x
for factor in result:
print "\t\t%i %% %i = %i" % (x,factor,x % factor)
if x % factor == 0:
isPrime = False
print "\t\t\t%i,foobar" % x
subFactors = factors(x)
result.extend(subFactors)
if isPrime:
result.append(x)
print ""
return result
def main():
factor = dict()
for i in xrange(1,100):
factor[i] = factors(i)
factor[i].insert(0,1)
factor[i].append(i)
print "%i: %s" % (i,factor[i])
if __name__ == "__main__":
main()
そのコードは無限ループです!具体的には、以下を繰り返し出力します。
2,foo
2,bar
3,foo
4 % 2 = 0
4,foobar
2 回目の反復では、「bar」print ステートメントは出力されず、値がx
「bar」print ステートメントから「mod」print ステートメントに変更されることに注意してください。
この振る舞いを作者に説明することはできません。あなたの親切な人のうちの1人はできますか?